02c语言_注释和基础编译
注释: 单行注释 // 多行注释 /* ... */
/*
*Copyright(c) 2019 xyy.com
*文件名: hello_word.c
* 描述: 运行程序后再终端上输出制定内容
*作者: xyy
* 完成日期: 2019.9.10
* 当前版本: 1.0
*/
1 编译生成二进制文件: -o 二进制文件
gcc -o hello_world.o -c hello_world.c
2编译生成可执行文件:
gcc -o hello_world hello_world.o
3常用的方法:
gcc -Wall -o bin/hello_world src/hello_world.c
4数据类型:
short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。
在不同的系统上,这些类型占据的字节长度是不同的:
在32 位的系统上
short 占据的内存大小是2 个byte;
int占据的内存大小是4 个byte;
long占据的内存大小是4 个byte;
float占据的内存大小是4 个byte;
double占据的内存大小是8 个byte;
char占据的内存大小是1 个byte。
具体可以用sizeof测试一下即可。
short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型
关系运算符和表达式
在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。
(1)关系运算符及优先次序
在C语言中有以下关系运算符:
1.< 小于
2. <= 小于或等于
3. > 大于
4. >= 大于或等于
5. == 等于
6. != 不等于
在六个关系运算符中,<,<=,>,>=的优先级相同,高于== 和!=,==和!=的优先级相同。
(2)关系表达式
关系表达式的一般形式:表达式 关系运算符 表达式
例如:
a+b>c-d
x>3/2
‘a’+1<c
-i-5*j==k+1
都是合法的关系表达式。由于表达式也可以又是关系表达式, 因此也允许出现嵌套的情况。
例如:
a>(b>c)
a!=(c==d)
关系表达式的值是真”和“假”,用“1”和“0”表示。
例如:
5>0 的值为“真”,即为 1。
(a=3)>(b=5)由于 3>5 不成立,故其值为假,即为 0。
逻辑运算符和表达式
(1)逻辑运算符及优先次序
C语言中提供了三种逻辑运算符:
&& 与运算
|| 或运算
! 非运算
与运算符"&& “和或运算符”||“均为双目运算符。具有左结合性。非运算符”!"为单目运算符,具有右结合性。
“&&”和“||”低于关系运算符,“!”高于算术运算符。
按照运算符的优先顺序可以得出:
a>b && c>d 等价于 (a>b)&&(c>d)
!b==c||d<a 等价于 ((!b)==c)||(d<a)
a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b)
(2)逻辑运算的值
逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。
与运算 &&:参与运算的两个量都为真时,结果才为真,否则为假。
或运算||:参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。
3.非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。
(3)逻辑表达式
逻辑表达式的一般形式:表达式 逻辑运算符 表达式
其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。
例如:
(a&&b)&&c
逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”分别代表“真”和“假”
if 语句
(1)if 语句的三种形式
1.if (表达式) 语句
其语义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。
2.if-else
if(表达式)
语句1;
else
语句2;
其语义是:如果表达式的值为真,则执行语句 1,否则执行语句 2 。
3.if-else-if
if(表达式 1)
语句 1;
else if(表达式 2)
语句 2;
else if(表达式 3)
语句 3;
…
else if(表达式 m)
语句 m;
else
语句 n;
其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个 if 语句之外继续执行程序。 如果所有的表达式均为假,则执行语句 n。然后继续执行后续程序。
(2)条件运算符和条件表达式
条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。
由条件运算符组成条件表达式的一般形式为:
表达式1 ? 表达式2: 表达式3
其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 2 的值作为整个条件表达式的值。
注意:
1.条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
例如:
max=(a>b)?a:b
可以去掉括号而写为
max=a>b?a:b
条件运算符?和:是一对运算符,不能分开单独使用。
条件运算符的结合方向是自右至左。
例如:
a>b?a:c>d?c:d
应理解为
a>b?a:(c>d?c:d)
这也就是条件表达式嵌套的情形,即其中的表达式 3 又是一个条件表达式。
switch 语句
C语言还提供了另一种多分支选择的switch语句,其一般表达式为:
switch(表达式)
{
case 常量表达式 1: 语句 1;
case 常量表达式 2: 语句 2;
…
case 常量表达式 n: 语句 n;
default : 语句 n+1;
}
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case 后的语句。如表达式的值与所有 case 后的常量表达式均不相同时,则执行 default 后的语句。
循环结构
C语言提供三种循环结构,分别为while循环,do while循环和for循环。其一般式如下:
while语句
总体注解:
while语句创建一个循环,该循环在判断表达式为假(或0)之前重复执行。while语句是一个入口条件(entry-condition)循环,在进行一次循环之前决定是否要执行循环。因此有可能一次也不执行。循环的语句部分可以是一个简单语句或一个复合的语句。
while(表达式)
{
循环体语句
}
在表达式为假(或0)之前重复执行statement部分。
例子
1
2
3
4
|
while (i++<10) { printf (“count %d ”,i); } |
do while 语句
总体注解:
do while语句创建一个循环,它在判断表达式为假(或0)之前重复执行。do while语句是一个退出条件循环,在执行一次循环之后才决定是否要再次执行循环,因此循环至少要被执行一次。循环的语句部分可以是一个简单的语句或一个复合语句。
形式
do
{
循环体语句
}while(表达式);
在表达式为假(或0)之前重复执行循环体语句
例子
1
2
3
4
|
do { printf ( "count %d" ,i); } while (i<20); |
for语句
总体注释:
for语句使用由分号隔开的三个控制表达式来控制循环过程。初始化表达式只在开始执行循环语句之前执行一次。如果判断表达式为真(或非0)就执行一次循环。然后计算更新表达式并再次检查判断表达式的值。for语句是一个入口条件循环,在进行一次循环之前决定是否要执行循环,因此有可能循环一次也不执行。循环的语句部分可以是一个简单的语句或一个复合语句。
形式
for(初始化表达式;判断表达式;更新表达式)
{
循环体语句
}
循环在判断表达式为假(或0)之前重复执行。
例子
1
2
3
4
|
for (i=0;i<100;i++) { printf ( "i count is %d\n" ,i); } |