1、在逻辑表达式的求阶过程中,并非所有的逻辑运算符都被执行。
例:
#include<stdio.h>
int main()
{
int a = -1, b = 6, c;
c = (++a < 0) && (--b >= 0);
printf("%d, %d, %d\n", a, b, c);
return 0;
}
输出结果:0, 6, 0
分析:
在这段程序中,为什么++a就会导致a的数值发生变化,而--b却没有改变b的数值呢?
原因是:
当前这个c的判断是由两个语句用 && 连接的,只有当前后都为true的时候才为真,所以当程序运行发现前半部分的(++a>0)已经为假了,那么就不会再继续执行下半部分的判断语句,所以b的值没有发生变化。
2、关于转义字符
例1:
#include<stdio.h>
int main()
{
printf("c\tlanguags\be\rC\n");
printf("is\tusef\165\x6c\n");
return 0;
}
输出结果:
C language
is useful
例2:\t对应空格次数并不是固定的
#include<stdio.h>
int main()
{
printf("this\tis\tc\bC\tprogram.\rT\n");
printf("*\\abd\bc\t\r\\*ABCD\105\x46*\\");
return 0;
}
输出:
This is C program.
\*ABCDEF*\
原因分析:我们通常认为\t对应的就是4个空格数,如上题可知,实际上\t对应的空格数并不是固定的4或8个。
\t为水平制表符,键盘上为TAB键,一般为8个空格.
\t具体留多少空格,取决于\t前面的字符数量.
如果\t前面有x(x>=0)个字符.x>0:
跳 8-(x%8)%8 个空格.x==0
直接跳八个空格位简单说:
\t就是8个\b(退格符),然后把\t前面八个以内的字符填进去,不足八个则填为空格.(相当于\t的空格数需要保证在填完空格以后,输出的字符总长度一定是8的倍数)
3、逗号运算符和逗号表达式
4、自增和自减运算
以x为算术类型的变量,x++和++x的相同之处在于:单独作为一个表达式语句被使用时,无论是执行了哪一种表达式,执行结束后x的值都增加1.
x++和++x的相同之处在于:++x是先将加1后,再在其所在的表达式中使用x的值;而x++是在其所在的表达式中先使用x的值完成计算后,再将x的值加1。自减运算同。
基本输入输出格式
1、 printf("%-3d", 12); // 3:即宽度为3;-3:左对齐