爬爬爬之路:C语言(二) 入门篇2

布尔类型
C语言中 bool型 分为真 和 假两种值 既true和false两种值
值得注意的时在C语言中 0为false  所有非0数都为true
但当计算判断表达式,结果为假时,返回值为0;结果为真时,返回值为1.
//系统通过预编译,把0编译成no 把1编译成yes
//所以在工程中一般只看见yes和no

宏定义
#define yes 1
#define no 0
把工程中所有的yes替换成值1,所有的no替换成0
值得注意的是:不能在宏定义末尾加’;’,写成#define yes 1;   因为这么写系统会编译成把yes替换成值 1; 此时’;’也成为替换语句的一部分 会导致程序错误

关系运算符号
>   <   >=  <=  ==  !=
关于算符优先级 其中(>  >=  <  <=) 大于 (==   !=)的优先级
P.S 括号中的算符优先级相同
比如在C语言中    1 == 3 > 1      这个表达式结果为真
因为优先级关系  上述表达式相当于 1 == (3 > 1)  先计算括号里的表达式,结果为真,既1  于是计算表达式 1 == 1 此判断表达式结果显然为真 所以结果为真  返回值为 1.

逻辑运算符
&&(与)    ||(或)    !(非)
通常与关系表达式并用,如:
数学上不等式  3 < a < 7 用C语言需写成  3 < a && a < 7
&&(与)表示并列关系 可简单理解为 ‘并且' 的意思 如3 < a && a < 7可翻译为 3 < a 并且 a < 7 (多个并列表达式中 一假即假)
值得注意的是 在 && 表达式中 从左往右 遇到第一个为假的表达式后 && 后的所有表达式无论真假均不再执行
||(或)表示选择关系 可简单理解为 ‘或者' 的意思                                                                        (多个并列表达式中 一真则真)
值得注意的是 在 || 表达式中 从左往右 遇到第一个为真的表达式后 || 后的所有表达式无论真假均不再执行
!(非)表示否定关系 即取表达式完全相反的值                                                                             ( 1对结果取反,非真即假)
短路现象:
int a = 5;
int b = 10;
bool result = a > b && a++;
printf(“%d,%d”,result,a);
此时输出结果为0,5
分析表达式 a++ 因为 a++ 非零 所以 表达式 a 值为真, 但由于 a > b为假 故而 a++ 步骤不执行
友情提示这里要注意 ++ 运算符号的执行顺序
把表达式 a > b && a++ 在计算机编译过程中的步骤分开来看   则按照顺序执行的顺序为
 第一步: a > b ,若为假,则不再其后的表达式.   为了便于阐述步骤过程 在此 假设本步骤的值为真并继续执行.
 第二步: a ,第二步执行的是表达式a  判断表达式 a 的真假, 根据C语言真假原理(非0即真),此时a = 5 != 0,故 bool变量result的值为真(若 a = 0 则result 的值为 假,但此时无论a的取值都会执行第三步)
 第三步: a++,  a自增1.

根据以上的步骤分析结果:
1. int a = 0;
2. int b = 10;
3. bool result = a < b && a++;    
4. printf(“%d ,%d”, result, a);   //输出结果为 0 ,1

若将语句3替换为: bool result = a > b && a++;
则输出结果为0 , 0

||表达式也有相同情况 ,只是情况为从左往右第一个表达式为真时,不再执行符号 || 后的表达式 这里不在赘述




C语言程序执行的三种结构
1.顺序结构
2.分支结构 (if语句)  (分支结构中,只执行一个分支的语句)    switch语句
3.循环结构 (while for do-while)
语句规范:
if语句
if (判断语句) {
     执行语句;
}
如果判断语句为真,就执行大括号中的语句
如果判断语句为假,就跳过大括号中的语句

若不慎在左大括号{ 前加了分号;
if (判断语句) ;{
     执行语句;
}
则无论判断语句是否为真,都执行大括号中的语句


char和int的联系
事实上,输入一个字符,就相当于输入一个ASCII码值范围内(0~255)之间的整数

条件表达式(三目运算符)
判断条件 ? 返回值1 : 返回值2


枚举类型 enum
定义枚举类型
     enum 名字 {

          枚举值的列表(各值用逗号隔开,最后一个值可加逗号可不加,默认第一个变量值为0,变量值依次递增1)

     };


switch语句:
注意break.
特别注意的是:switch括号的表达式 但必须是整型数据,int char都可   但其他数据类型不行 且case的情况只能是常量 不能是变量
例:
int a = 0;
int n = 0;
scanf(“%d”,&n);
switch( n ){
     case 1:
          a++;
     case 2:
          a++;
     default:
          a++;
}
若输入1, 进入case 1, 执行 a++   由于没有遇到break, 继续向下执行 直到执行完default, 最后 a = 3;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值