您的位置:首页 > 编程语言 > C语言/C++

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

2015-10-09 14:24 246 查看
布尔类型
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: