C语言中细节辨析

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:左对齐
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值