C语言程序设计_S2
例、 a = 5 + (c = 6) /* c=6, a=11 */ a = (b = 4) + (c = 6) /* c=6, b=4, a=10 */ a = (b = 10) / (c = 2) /* c=2,b=10,a=5 */ 也可以出现复合运算符 a += a -= a*a /* 先a=a-a*a,再a=a+a */ 3.9 逗号运算符和逗号表达式 逗号运算符:, 逗号表达式:用逗号运算符把两个表达式连接起来的表达式。 其一般形式为: 表达式1,表达式2 例、 3+5,6+8 /* 一个简单的逗号表达式 */ 逗号表达式 逗号表达式的值等于“表达式2”的值,但C语言中使用逗号表达式的一般目的是分别获得两个表达式的值,因此,逗号运算符又称为“顺序求值运算符”。 逗号表达式可以扩展为更一般的形式: 表达式1,表达式2,表达式3,.....,表达式n 例、 a = 3*5,a*4 (a=3*5,a*4),a+5 区别:(逗号运算符在所有运算符中优先级最低) x = (a=3,6*3) /* 赋值表达式 */ x = a =3,6*a /* 逗号表达式 */ 逗号表达式 逗号表达式 区别:(逗号可以作运算符,也可以作分隔符) printf("%d,%d,%d",a,b,c); /* 逗号做分隔符 */ printf("%d,%d,%d",(a,b,c),b,c); /* (a,b,c)中的逗号是运算符,其余逗号是分隔符 */ 3.10 小结 本章有关常量、变量、运算符、表达式的细节非常多,它们不是程序设计的最重要的内容,但细节错误也导致程序最终错误,因此,还是要引起注意。 细节不能死记,要注意本质概念;对于无把握的细节,要在上机中进行测试。 转义序列 字符形式 功能 \n 换行符 \t 横向跳格:跳到下一个输出区(每一输出区为8个字符位置) \v 竖向跳格 \b 退格 \r 回车(回到本行起始字符位置) \f 走纸换页 \\ 反斜杠字符\ \' 单引号(撇号)' \ddd 1~3位八进制数所代表的字符。如\101表示'A' \xhh 1~2位十六进制数所代表的字符。如\x40表示'A' 3.5 字符型数据 3.5.1 字符型常量 用单引号(撇号)括起来的一个字符。如:'a'、'x'、'D'、'?'、'$'。 以“\”开头的字符序列,称为“转义序列”,“\”使其后面的字符变为另外的意义。转义序列主要用来控制打印机和屏幕输出。 例:printf("\n sum is %d\n\n",sum); 3.5.2 字符型变量 字符型变量用来存放字符型常量 例如: char c1,c2; /* 定义c1、c2为字符变量 */ c1 = 'a'; c2 = 'b'; 字符型变量只能存放一个字符 字符变量在内存中占一字节 字符型数据在内存中的存放形式 字符在内存中以二进制存放 将字符对应的ASCII码存放到内存里 字符 ASCII 'A' 0x40 (64) 'B' 0x41 (65) 'a' 0x61 (97) ‘b' 0x62 (98) '0' 0x30 (48) '1' 0x31 (49) 字符型数据和整数 [例3.3] main() { char c1,c2; ?c1 = 97; c2 = 98; ?printf("%c %c",c1,c2); } 字符以ASCII码存储,其存储方式与整数类似。 从而,C语言允许字符和整数之间进行运算。 [例3.4] main() { char c1,c2;? c1 = 'a'; c2 = 'b';? c1 = c1 - 32; c2 = c2 - 32; ? printf("%c %c",c1,c2); } 程序运行显示 A B 字符串常量 字符常量:单引号括起来的一个字符。 字符串常量:双引号括起来的字符序列(0~N个字符)。 如:"How do you do.", "CHINA", "a", "$123.45" 字符串常量 字符串常量在内存中的存放:每一个字符均以其ASCII码存放,且最后添加一个“空字符”(二进记为NULL或\0。字符‘0’在内存中存0x30。 例: 字符串常量“CHINA”存放在内存中的情况是:(6字节存储器,不是5字节) C H I N A \0 C语言基本数据类型有四种: 字符型 整型 单精度浮点型 双精度浮点型 char int float double 类型说明符 基本数据类型小结 C语言有四种类型修饰符: 短 长 有符号 无符号 s