\documentclass[12pt]{report} %Structure \setcounter{tocdepth}{5} \setcounter{secnumdepth}{5} %Structure %Layout \usepackage{geometry} \geometry{ a4paper, total={170mm,257mm}, left=20mm, top=20mm, } \setlength{\footskip}{45pt} %Layout %Text \renewcommand{\familydefault}{\sfdefault} \usepackage{sfmath} \usepackage{parskip} \usepackage{graphicx} %Text %Extra %Extra %Technical Stuff \usepackage{float} \usepackage{amsmath} \everymath{\displaystyle} \DeclareMathOperator{\cosec}{cosec} \DeclareMathOperator{\cosech}{cosech} \DeclareMathOperator{\sech}{sech} \DeclareMathOperator{\arcsec}{arcsec} \DeclareMathOperator{\arccot}{arccot} \DeclareMathOperator{\arccosec}{arccosec} \DeclareMathOperator{\arcsinh}{arcsinh} \DeclareMathOperator{\arccosh}{arccosh} \DeclareMathOperator{\arctanh}{arctanh} \DeclareMathOperator{\arcsech}{arcsech} \DeclareMathOperator{\arccoth}{arccoth} \DeclareMathOperator{\arccosech}{arccosech} \DeclareMathOperator{\Ln}{Ln} \DeclareMathOperator{\sinc}{sinc} %Technical Stuff \begin{document} \tableofcontents \chapter{The C Programmig Languages} \begin{figure}[H] \centering \includegraphics[width=0.3\textwidth]{structure.png} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.3\textwidth]{memorymap.png} \end{figure} \section{Lexical Conventions} \begin{enumerate} \item ~[Identifiers]\par [is a sequence of underscored letters and digits, reserved are keywords not to be used otherwise] \begin{figure}[H] \centering \includegraphics[width=0.4\textwidth]{keywords.png} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{attributes.png} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.55\textwidth]{divison.PNG} \end{figure} \item ~[Punctuators] \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{operators.png} \end{figure} \item ~[Constants] \begin{enumerate} \item ~[Integers Constants]\par [sequence of digits whose type depends on the prefixes and suffixes [0, 0x, U, L, UL, ULL]] \begin{enumerate} \item ~[Unsuffixed Decimal]: [int, long, unsigned long] \item ~[Unsuffixed Octal, Hexadecimal]: [int, unsigned int, long, unsigned long] \item ~[Suffixed U]: [unsigned int, unsigned long] \item ~[Suffixed L]: [long, unsigned long] \item ~[Suffixed UL]: [unsigned long] \end{enumerate} \item ~[Character Constants]\par [seq of one or sometimes two or more chars enclosed in single quotes ’ ’, of type char] \item ~[Floating Constants]\par [consists of an int, fraction, e or E, signed int exp, type depends on the suffixes [F, L]] \begin{enumerate} \item ~[Unsuffixed]: [double] \item ~[Suffixed F]: [float] \item ~[Suffixed L]: [long double] \end{enumerate} \item ~[String Literals]\par \end{enumerate} \end{enumerate} \section{Declaration Statements} [a declaration specifies the interpretations given to each identifier]\par [except for statement labels and preprocessor macros, all identifiers are declared by their appearance in C declarations, ordinaries appear in declarators within declarations, and type tags, structure and union components, are declared in certain kind of type specifiers in declarations, while statement labels are declared by their appearance in a C function, and preprocessor macros are declared by the define preprocessor command thus a C file consists of quench of top level declarations, each function has parameter declarations and a body, which in turn may contain various blocks further containing inner declarations, call definition if allocates storage or codes statements] [constraints]\par [if an identifier has no linkage, there shall be no more than one declaration of the identifier in the same scope and in the same name space, except for incomplete tags]\par [a definition of an identifier is a declaration for that identifier that for an object, causes storage to be reserved for that object, for a function, includes the function body]\par
[all declarations in the same scope that refer to the same object or function shall specify compatible types]\par
[external definitions]\par
[no more than one external definition for each identifier, if with internal linkage in a translation unit, if with external linkage in the entire program, moreover if used in an expression, there shall be exactly one external definition for the identifier]\par
[the identifier declared in a function definition shall have a function type as specified by the declarator portion of the function definition]\par
[if the declaration of an identifier for an object has file scope and an initializer, the declaration is an external definition for the identifier while a declaration of an identifier for an object without an initializer and missing extern constitutes a tentative definition such that if a translation unit contains one or more tentatives for an identifier and the translation unit contains no external definition for that identifier, then the behaviour is exactly as if the unit contains the declaration of that identifier with default initializer]
\begin{figure}[H] \centering \includegraphics[width=1\textwidth]{typesp.PNG} \end{figure}
\section{Expressions} [an expression is a syntactic entity in programming language that may be evaluated to its value]\par [lvalue: refers to an object, not necessarily modifiable] [function designator: refers to a function]\par [non modifiables lvalues : array, const qualified, structure or union with const qualified members] \begin{enumerate} \item ~[Pointer Conversion] \begin{enumerate} \item \item \end{enumerate} \item ~[Primary Expressions] \item Postfix Expressions [LR] \begin{enumerate} \item ~[Array References] \item ~[Function Calls] [while in preparing function call, a copy is made of each argument passing strictly by value, such that the arguments are converted as if by assignment to the types of the corresponding parameters of function’s prototype, recursive calls to any function are permitted] \item ~[Structure References]\par \item ~[Postfix Incrementation] [after the value is noted, the operand is incremented or decremented by 1, as in additions] \end{enumerate} \item Unary Operators \begin{enumerate} \item ~[Prefix Increment Operators] \item ~[Address Operator] \item ~[Indirection Operator] \item ~[Logical Negation] \item ~[SizeOf] \end{enumerate} \item ~[Casts]: \item ~[Multiplicative][Additional][Relational, Equality][Logical AND, OR] \item ~[Conditional] \item ~[Assignment Operators] \item ~[Comma] \section{Control Flow} \begin{enumerate} \item ~[IfElse] \item ~[IfElseIf] \item ~[Switch] \item ~[Loops] \item ~[Exits For Switch, Loops] \item ~[Goto Labels] \end{enumerate} \section{Preprocessing} \begin{enumerate} \item ~[File Inclusion]: [\#include~"\text{header.h}"~<\text{file.h}>]$$$$[\text{includes the header files into the source code}] \item ~[Macro Substitution] [Operators] \item ~[Conditional Compilation]
\end{enumerate}
\section{Library Functions} \begin{enumerate} \item ~[File Operations]:\par [a stream is a source or a destination of data, communication medium with a program, that may be associated with a disk or other peripheral which is connected to a file or a device by opening it, while the connection is broken by closing the stream]\par [standard streams linked with io; streams, stdin, stdout, stderr, are pre opened]\par [a program writes to the streams temporarily through the buffer memory associated with the stream]\par \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{modechart.png} \end{figure} \item ~[Formatted Output And Input]\par [data is written in computer encoded form, in case of failure functions returns NULL or EOF] [characters speculation] [strings speculation] [integers or bulk speculations] [random access to the files] [error handling functions] [in many environments for redirection of input or output] \item ~[Memory Allocation] \par[manual memory management for dynamic memory allocation in free store] \item ~[Strings Manipulation]\par [single strings, dealings, checking occurences from pointing head to ending character] \item ~[Mathematics]\par [trigonometrics] [generals]
\end{enumerate}
\end{enumerate} \end{document}