一、逗号运算符和逗号表达式
定义:形如3+5,6+8,利用逗号将两个表达式连接起来,称为逗号表达式,又称为“顺序求值运算符”。
当多个逗号表达式赋一个值时,其输出结果为最后一个表达式,但由于逗号运算符时级别最低的,因此,需要结合其他运算符的优先级进行具体分析。如以下两个表达式:
1:int t;
t=1 + 3, 2 * 4, 5 / 2;
printf("%d\n",t); //其输出结果为4。(因为求和的优先级高于逗号表达式)
2.t = (1 + 3,2 * 4, 5 / 2);
printf("%d\n",t);//其输出结果为2。(由于括号的优先级最高,因此先计算括号内的各个表达式且最后一个表达式的结果为2)
二、C程序结构
如图所示,C程序由若干个源程序文件组成,一个源文件可以由若干个函数和预处理命令以及全局变量声明组成,一个函数由数据分明和执行语句组成。
C语句的分类:(1)控制语句;(2)函数调用语句;(3)表达式语句;(4)空语句;(5)复合语句(又称为“分程序”)。
三、字符数据的输入输出
输入和输出设备不可能同一个设备 ,如手机:输入设备是LCD显示屏,输出设备是触控膜(类似于按键)。
1.putchar函数(顺序传输)
作用:向终端输出一个字符。
表达形式:putchar(c)。
例如 :
#include
int main(void)
{
char a,b,c;
a = 'B';
b = 'O';
c = 'Y';
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
其输出结果为:BOY
值得注意的是,putchar每次只能传输一个字符。它也可以输出其他转义字符。
2.getchar函数
作用:从终端输入字符或字符串。
一般形式: getchar() //无参数
一次获得一个字符,例如:
#include
int main(void)
{
char c;
c = getchar();
putchar(c);
putchar('\n');//换行
return 0;
}
在运行时,如果从键盘上输入字符‘a'并按enter键,就会在屏幕上看到一个输出的字符a。
运行结果:a (输入'a'后,按enter键,字符才送到内存)
a(输出变量c的值'a')
<注意>getchar函数只能接受一个字符,getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。
四、格式输入或输出
1.printf函数
一般格式:printf(格式控制,输出表列)//例:printf("%d,%c\n",i,c) 。
(1)用法:
采用%d进行占位,由下一个参数所替换。
printf("Hello world!%d\n",1234);输出:Hello word!1234
printf("Hello %d world!%d\n",1234,4567);输出:Hello 1234 word!4567
当参数个数小于%d的个数,则加上一个随机数 。
printf("Hello %d world!%d\n",1234);输出:Hello 1234 word!随机数字
当参数个数大于%d的个数,则截断多余的后几位参数。
printf("Hello world!%d\n",1234,4567);输出:Hello word!1234
(2)格式字符
<1> %d,%i,用来打印有符号十进制整型。
当参数的字节大于四个字节时,则需将%d换为%ld,%ud。
<2>%o,%u,%x,用来打印无符号的八,十,十六进制整型。
若参数为负值,则将打印其无符号的补码整型
例如:int a = -1;
printf("%o",a);
输出结果为:37777777777
<3>%e,%E ,打印出小数的科学计数法形式
int a = 123.4567;
printf("%e",a);
输出结果为:1.234567e+02;//若为%E,则输出:1.234567E+02
<4>%f,%F , 用来输出实数(包括单双精度),以小数形式输出。
当为%f格式:
int a = 123.4567;
printf("%f",a);
输出结果为:123.456700
当为%m,nf格式:指输出的数据共占m列,其中小数有n位,如果数值长度小于m,则左端补空格。(保留小数时采用四舍五入原则)
当为% -m,nf格式:指输出的数据共占m列,其中小数有n位,如果数值长度小于m,则右端补空格。(保留小数时采用四舍五入原则)
<5>%s , 某个字符串首字母的地址。
printf("Hello %s\n","word!"); //输出结果:Hello word!
<6>%g,%G, 浮点型转化为%f或%e,二者中的哪个运行结果的宽度短就用哪个。
printf("%g\n",1.234567); //输出结果为:1.23457
<7>%c, 整型参数转化为Unsigned char。
printf("x = %c\n",65); //输出结果为:x = A .
<8>%p, 打印指针的地址。
printf("%p\n",&i); //输出结果为:i的地址
<9>%,打印出%
printf("99.99%%"); //输出结果为:99.99%。
<10>返回值代表实际输出字符长度
ret = printf("Hello!\n");
printf("ret = %d\n",ret); //输出结果为:7
2.scanf函数
(1)格式字符
<1>%d, 读取十进制整数
<2>%c, 读取单个字符,包括空格、回车。
<3>%s, 读取字符串。
<4>%f,%lf, 读取float型,double型浮点数。
<5>%x,%X, 读取十六进制整数。
<6>%nd, 输出截取的n个字符宽度。
其中,%nd%*nd%nd,表示跨过%*nd对应的n个宽度。
例:scanf("%3d%*3d%3d",&i,&j);
printf("%d,%d\n",i,j);
当运行程序中,输入123456789,则输出结果为:123,789。
(2)注意事项
输入的数据应为其地址,即&i,&j,否则会导致程序崩溃;
在输入字符时,在对应位置应输入与这些字符相同的字符;
输入小数时,当输入的字符个数在2个及其以上,可用空格、Tab键隔开。