C编程语言Tutorial-Page2
参考以下页面导航完成C教程。
C语言page1
所以page2 C语言
C语言page3
C语言page4
C语言page5
图提到函数结构C .每个C函数会有一些参数,返回语句,函数名和输入(scanf)或输出(printf)声明中提供输入和打印输出/结果。
编译的代码
编译代码:gcc helloworld.c
输出:创建a.o ut
运行程序:. / a.o ut
Makefile
helloworld。:helloworld.o
gcc helloworld。o - o helloworld.out
helloworld。o: helloworld.c
gcc - c helloworld.c
编译模型
•预处理:解决所有预处理器指令。
#,# define宏,# ifdef等等。
•编译器:将文本转换成目标文件
可能解决interobject引用
•链接器:解决所有interobject引用(或给你一个链接器错误)
创建二进制可执行文件
•装载机:将程序加载到内存并运行的主要()函数

数据类型
我们将看到的数据类型,运营商和表情,控制流和功能在细节之中用一些示例练习。
指令可以操作和过程数据有限大小的所有数据的比特序列,8位字节因此所有程序需要知道什么样的数据指令操作(它是如何组织的,多长时间等)。这是使用程序支持的数据类型定义词是用于一般符号的默认大小的数据由处理器,处理当前的处理器支持64位操作。我们已经看到了基本数据类型支持C page1上。
字符(字符):
简单的1个字节用来存储一些通常在机器使用ASCII编码映射这些1个字节的数字字符符号
整数(int):
4字节的内存存储在二进制数据范围从0到b11111111111111111111111111111111可用
浮点数:
4字节的内存存储由IEEE 754标准定义的单一解释精度
长:
按标准必须至少32位(4个字节)。int在32位系统上一样。枚举数据类型:
子组整数的值例如,颜色=红、蓝色、黑色或黄色。检查第1页的细节。
溢出的数据类型
溢出导致状态寄存器位被设置。
例子:
unsigned int x = 2123456789;
unsigned int y = 3123456789;
unsigned int z;
z = x + y;
z是951946282,而不是5246913578年预期,因此编译器生成警告,因为它们是常数。
类型转换和铸造
以下是紧随其后的是C编译器自动类型转换规则:
•char和短操作数转换为int•低数据类型转换为高数据类型和结果是更高的类型。•无符号之间的转换和签署类型可能不会产生直观的结果。•的例子:
浮动f;双d;长l;
int我;短的年代;
d + f f将转换成双
i / s s将转换为int
信用证我转化为长;长期的结果
显式转换(铸型)
一般形式的一种铸造操作符
(类型名称)表达式
它通常是一个很好的实践使用显式的转换比依靠自动类型转换。
例子:
C =(浮动)9/5 * (f-32)
浮动int转换导致截断小数部分
双浮点数转换原因四舍五入的数字
长int, int引起高阶位的下降。
运营商
算术运算符、一元操作符二元操作符,比较运算符、关系运算符逻辑运算符,复合赋值操作符和指针运算符成员和其他运营商在C语言中使用。在第1页提到的一样。
算术运算符:
有2种算术运算符在C:
一元操作符:操作符,只需要一个操作数。
需要两个操作数的二元操作符:运营商。
前后增量
还可以使用+ +我,我代替我+ +,—
然而,两种形式还稍微重要的区别。
考虑下面的例子:
int = 9;
printf (" % d”+ +);
printf (" % d”);
输出结果是:9、10
但是如果我们有:
int = 9;
printf (" % d”, + +);
printf (" % d”);
输出结果是:10、10
+ +将返回的当前值,然后增量的价值
+ +一个另一方面增量的价值之前返回的值
控制语句
有两种主要类型的选择和下面提到的其他为重复的语法也是提到page1上。选择语句:
•如果If - else
•开关
•条件操作符(三元操作符)
重复:
•,延伸
•为
•嵌套循环
•休息,继续
打破和继续的例子
int = 10;
而(> = 0)
{printf (" \ nValue = % d ", 1);
——;
如果(= = 5)休息;
}
输出:
值= 10
价值= 9
价值= 8
价值= 7
价值= 6
int = 6;
而(> = 0)
{
——;
如果(= = 3)继续;
printf (" \ nValue = % d ", 1);
}
输出:
值= 5
值= 4
价值= 2
值= 1
值= 0
总休息,继续工作的内在的大多数循环或开关case语句。其他条件语句将被忽略。
C函数的例子
# include < stdio . h >
int最大(int, int b);
int main ()
{
int a、b;
int结果;
printf("输入2个整数\ n ");
scanf (“% d % d”,和福利);
结果=最大(a, b);
printf(“马克斯% d \ n”,结果);
}
int最大(int, int b)
{
返回(> b ? a: b);
}
存储类
•存储类关键字
•存储时间-长一个对象存在于内存中
•- -对象可以引用项目范围
•自动存储
•创建和销毁对象在其块
•汽车:默认为局部变量
•汽车双x, y;
•注册:试图把变量放在高速寄存器
•只能用于自动变量
注册int counter = 1;
•静态存储
•变量存在于整个程序执行
•默认值为零
•静态:局部变量中定义的函数。
•保持价值函数结束后
•只有在自己的函数
•走读生:默认为全局变量和函数
•在任何函数
范围
•文件范围
•标识符定义的功能外,在所有的功能
•使用全局变量,函数定义、函数原型
•功能范围
•只能引用一个函数体内
•块范围
•一块中声明的标识符
•块范围始于宣言,右边括号结束
•用于变量,函数参数(函数的局部变量)
•外块“隐藏”从内部块具有相同名称的如果有一个变量的块
•函数原型范围
•在参数列表用于标识符
# include < stdio . h >
int x = 1;/ /全局作用域
空白(无效);
空白b(无效);
int main ()
{int x = 5;
printf("外层循环:x % d \ n”, x);
{
int x = 7;
printf("内循环:x % d \ n”, x);
}
();
b ();
c ();
();
b ();
c ();
返回0;
}
(空白)
{
int x = 9;
printf("汽车x % d \ n ");
x + +;
printf("汽车x % d \ n”;
}
空白b ()
{
静态int x = 11;
printf("静态x % d \ n ");
x + +;
printf("静态x % d \ n ");
}
无效的c ()
{
printf("全球x % d \ n ");
x + +;
printf("全球x % d \ n ");
}
上面的输出示例
外层循环x是5
内循环x是7
汽车x是9
汽车x是10
静态x是11
静态x是12
全球x = 1
全球x = 2
汽车x是9
汽车x是10
静态x是12
静态x是13
全球x = 2
全球x是3
递归
•递归函数
•函数调用自己
•只能解决基本情况
•把问题分成
•它能做什么
•它不能做什么
•它不能像最初的问题做些什么
•本身的功能启动一个新副本(递归步骤)来解决它不能做什么•最终基本情况得到解决
被插入,工作和解决整个问题
例子:
int事实(int){返回> 0 ?在* (1):1;}