本文共 3868 字,大约阅读时间需要 12 分钟。
表达式 | 优先级 |
---|---|
()(小括号),[](数组下标).(结构成员)->(指针型结构成员) | 最高 |
!(逻辑非).(位取反)-(负号)++(加1)–(减1)&(变量地址) | |
*(指针所指内容)type(函数说明)sizeof(长度计算) | |
*(乘)/(除)%(取模) | |
+(加)-(减) | |
<<(位左移) >>(位右移) | |
<(小于)<=(小等于) | |
>(大于)>=(大等于)==(等于) !=(不等于) | |
&(位与) | |
^(位异或) | |
| (位或) | |
&&(逻辑与) | |
| | (逻辑或) | |
?:(?表达式) | |
= += -=(联合操作) | |
,(逗号运算符) | 最低 |
关系运算符:在程序中经常要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。
1.C语言中的关系运算符:<,<=,>,>=,==,!=
2.关系表达式一般形式为
表达式 关系运算符 表达式
1. C语言提供了三种逻辑运算符
2.逻辑运算符的值用“1”和”0”来表示。
3.逻辑表达式一般形式为:
表达式 逻辑运算符 表达式
(自左向右为左结合性,自右向左为右结合性)
用if语句可以构成分支语句,它根据给定的条件进行判断,以决定执行某个分支程序段。C语言有三种基本形式
if(表达式)语句
含义为:如果表达式的值为真,则执行其后的语句,否则不执行该语句。
if(表达式) 语句1; else 语句2;
含义为:如果表达式的值为真,执行语句1,否则执行语句2
if(表达式1) 语句1;else if(表达式2) 语句2;…else 语句n;
含义为:如果表达式1为真,执行语句1 ;如果表达式2为真,执行语句2。否则执行else种的语句n。
例题
void main() { char c; printf("input a character :"); c = getchar(); if (c<32) { printf("This is a control character!\n"); }else if (c >='0' && c<='9') { printf("This is a digit\n"); }else if (c>=97&& c<=122) { printf("This is a small letter\n"); }else if (c >= 65&& c <= 90) { printf("This is a capital letter\n"); }else { printf("This is an other character!"); }}
if (a = 5)语句;if (b) 语句;
以上都是允许的。只要表达式的值为非0,即为”真”
案例:
void main() { int a; a = 2; if (2==a) { printf("equals 3"); } else { printf("is not equals 3"); }}
建议:如果不小心写成2=a,会出现编译错误,因为一个常数是不能被赋值
在if语句种,条件判断表达式必须用括号括起来,在语句之后必须加分号
在if语句的三种形式种,所有的语句应为单个语句,如果想要在满足条件时执行一组(多个语句),则必须把这一组语句用花括号{ }括起来组成一个符合语句。但要注意在}之后不能加分号。
void main() { printf("请输入三个数"); int a, b, c; int temp; scanf("%d %d %d",&a,&b,&c); if (a > b) { temp = b; b = a; a = temp; } if (a > c) { temp = c; c = a; a = temp; } if (b > c) { temp = c; c = b; b = temp; } printf("%d%d%d", a, b,c);}
当if语句种的执行语句又是if语句时,则构成了if语句嵌套的情形
一般形式为
if(表达式) if语句: if (){ if () ……;}
或者为
if(表达式) if语句; else if语句; if () if () 语句1; else 语句2;else if () 语句3; else 语句4;
if (表达式1)if (表达式2) 语句1;else 语句2;
此时我们应当遵循else原则,else与哪个if相近就与哪个构成配合,所以应当理解为
if (表达式1) if (表达式2) 语句1; else 语句2
条件运算符为”?”和“:”,它是一个三目运算符,即三个参与运算的量
表达式1?表达式2:表达式3
如果表达式1的值为真。则以表达式2的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值
if(a>b) max =a; else max=b;
可以表示为
max =(a>b)?a:b;
如a>b为真,则把a赋予max,否则b赋予max
1.条件运算符的运算优先级低于关系运算符和算数运算符,但高于赋值符。
max(a>b)?a:b
可以更改为
max=a>b?a : b;
2.条件运算符?和:是一对运算符,不能分开
3.条件运算符的结合方法是左结合性(从右到左)
a>b?a:c>d?c:d
理解为
a>b?a:(c>d?c:d)
switch (表达式) { case 常量表达式1:语句1; ... case 常量表达式n:语句n; default: 语句n + 1; break; }
其语句是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同,则执行default后的语句。
为了避免出现一个case情况符合,导致后面所有结果输出,提供break语句。用来进行跳出操作。
int a; printf("input integer number:"); scanf("%d", &a); switch (a) { case 1: printf("Monday\n"); break; case 2: printf("Tuesday\n"); break; case 3: printf("Wednesday\n"); break; case 4: printf("Thursday\n"); break; default: printf("error"); }
在使用switch语句应当注意以下几点
void main() { int year, n; scanf("%d", &year); if (year %4 ==0) { if (year %100==0) { if (year %400==0) { n = 1; } else { n = 0; } } else { n = 1; } } else { n = 0; } if (n) { printf("是闰年"); } else { printf("不是闰年"); }}
以上可以升级出很多版本
推荐做C语言经典100题
转载地址:http://ntxmj.baihongyu.com/