c语言--提高篇(习惯、风格)

1、 写法1:if('A'==a) { a++; }
写法2; if(a=='A') { a++;}
写法1比较好,若将“==”误写成“=”,编译器不允许对常数赋值就可检查到错误。
2、写法1:for(i=0;i<9;i++){ X=i+Y+J*7; }
写法2:

S=Y+J*7;
for(i=0;i<9;i++){
	X=i+S;
}

写法2比较好,将部分加法放到了循环体外,提高了效率。
3、

unsigned int a=0xFFFFFFF7;
	 unsigned char i=(unsigned char)a;
	 char* b=(char)&a;
	 printf("%08x,%08x",i,*b);         //数据输出的最小位数为8位,% x以十六进制小写输出

unsigned int 变量赋值给unsigned char变量时会发生字节截断(3位和高于3位的将被程序自动抛弃)。
答案:000000f7, fffffff7。

4、各个平台下基本数据类型的字节数
16位平台

char 1个字节8位

short 2个字节16位

int 2个字节16位

long 4个字节32位

指针 2个字节

32位平台

char 1个字节8位

short 2个字节16位

int 4个字节32位

long 4个字节

long long 8个字节

指针 4个字节

64位平台

char 1个字节

short 2个字节

int 4个字节

long 8个字节(区别)

long long 8个字节

指针 8个字节(区别)

5.unsigned char a=0xA5;
unsigned char b=~a>>4+1;
printf(“b=%d\n”,b);
知识点:类型转换,计算第二个表达式时,编译器会先把a和4的值转换为int型后再运算,当计算结果出来后再把结果转换为char型赋值给b.
运算符优先级:~ 优先于 >>
6. a , b交换
方法1:
a=a+b;
b=a-b;
a=a-b;
缺点:数值较大时,可能出现超界的问题。
方法2:
a=a^b;
b=a^b;
a=a^b;
优点:不会出现超界的问题

你可能感兴趣的:(C语言学习笔记)