06-C控制语句:分支和跳转

0x00 if语句列子

//colddays.c –找出0摄氏度一下的天数占总天数的百分比

 #include <stdio.h>
int main(void)
{

const int FREEZING = 0;
float temperature;
int cold_days = 0;
int all_days = 0;

printf(“Enter the list of daily low temperatures.\n”);
printf(“Use Celsius, and enter q to quit.\n”);

while(scanf(“%f”, &temperatures) == 1)
{

    all_days++;
    if(temperatures < FREEZING)
    cold_days++;
}

if(0 == all_days)
{
    printf(“%d 7hhb”);
}

return 0;

}

while循环的测试条件利用scanf()的返回值来结束循环,因为scanf()在读到非数字字符时会返回0。if语句控制程序的输出,如果expression为真执行statement一次,否则跳过

如果expression为真就执行statement,否则执行else里的statement。缩进是标准风格,C语言没说一定要缩进,缩进让根据测试条件的求职结果来判断执行哪部分语句一目了然。执
行多条语句就在statement外面加上花括号,扩起来形成一个块。

0x01 getchar()和putchar()

  • getchar()函数和putchar()函数不需要转换说明,只处理字符,所以比scanf()和printf()快、简洁,这两个函数通常是定义在stdio.h头文件中,它们通常是预处理宏,而不是真正的函数
  • getchar()和赋值结合起来与’\n’做比较
  • putchar()可以直接输出换行

0x02 ctype.h头

ctype.h接受一个字符作为参数,如果该字符属于特殊的类别就返回一个非零值,否则返回假(0)。

  • isalpha()函数的参数是一个字母,返回非零值

ctype.h头文件中的字符测试函数

Isalnum 字母和数字
Isalpha 字母
Isblank 标准的空白字符(空格、水平制表符或换行符)或其他本地化指定为空白的字符
Iscntrl 控制字符,如Ctrl+B
Isdigit 数字
Isgraph 除空格之外的任意可打印字符
islower 小写字母
isprint 可打印字符
ispunct 标点符号(除空格或字母数字字符意外的任何可打印字符)
Isspance 空白字符(空格、换行符、换页符、回车符、垂直制表符、水平制表符或其他本地化自定义的字符)
isupper 大写字母
isxdigit 十六进制数字符

ctype.h头文件中的字符映射函数(不会修改原始的参数只会返回已修改的值)

tolower 如果参数是大写字符,该函数返回小写字符;否则,返回原始参数
toupper 如果参数是小写字符,该函数返回大写字符;否则,返回原始参数

0x03 多重选择else if

使用else if去判断其它条件,只执行其中一个语句,都不满足执行else条件的语句

0x04 逻辑运算符

3种逻辑运算符

逻辑运算符 含义
&& 与,两个为真才为真
|| 或,两个有一个为真就为真
! 非,非假为真,非真为假
  • iso646.h头文件,可以使用and代替&&,||代替or和not代替!
  • !运算符的优先级很高,比乘法运算符还高,与递增运算的优先级相同,只比圆孔号的优先级低。&&运算符的优先级比||运算符高,但是两者的优先级都比关系运算符低,比赋值运算符高,都是序列点

0x05 条件运算符

if else的一种便捷方式,?:条件运算符,需要3个运算对象

expression1 ? expression2 : expression3

如果表达式1为真,表达式值与表达式2相同,否则值与表达式3相同

0x06 循环辅助

  • conitnue语句会跳过本次迭代的剩余部分,进入下一次循环
  • break语句会终止本层循环语句

0x07 多重选择

switch后圆括号中的表达式求值,通过case标签行来匹配是否成立,如果成立则执行:statement语句,结合break退出当前选择语句,如果没有break语句会继续向下执行其它选择语句成立的语句,如果都不成立会执行default的语句。可以使用多个case选择执行一个语句

如果使用浮点类型的变量表达式和某范围内决定程序流程去向使用if语句,使用switch可以减少生成的代码

0x08 goto语句

C语言最好不要使用goto语句

goto 标签名

0 条评论
发表一条评论