The C Programming Language chapter2

  1. C语言不同数据类型的赋值和初始化
    整形变量和char型变量的初始化:C语言不关心你是不是超过赋值范围了,比如char x = 555;这样的语句编译时会有警告,但是还是能运行的,编译器会自动进行截断。反正只要大方向的数据类型符合就对,不管你是个什么类型整数,是整数就行。字符型底层存储形式和整型相同,只是上层呈现不同。
    对于unsigned整型变量的初始化:语句如uint8_t x = -15; 编译器甚至都不会发出警告,由于x是无符号整数,所以赋值的时候也不用符号位和数值位分开赋值,直接全部复制给x就完事。

整形变量的赋值:无符号变量的值赋给符号变量,按正数处理(这个可能跟编译器有关,C语言中没有规定怎么处理);无符号强制转换为有符号,把无符号的第一位当成符号位看,比如对于uint8_t x =251就是负数,uint8_t x = 13就是正数。C语言中不应该出现无符号和有符号数的相互转换,同时%u和%d也不能乱用。同时出现类型转换时一定要显式表明,并且应该十分小心地使用。

2.格式输出符号
unsigned:加个u
long:加个l
%d, %ld决定了数据以什么形式显示(多长,有无符号位),最短都是32位即%d。short,char自动转换为32位%d,中间补0。

3.side effect 问题
a++,++a:是由编译器决定的,C语言不规定其执行顺序。所以不应该出现
x = a++;这样的语句,执行顺序不确定!
同样的:ret = h() + g();h()先执行还是g()先执行顺序也不确定。
当然这个可能太细了。

unsigned,012, 0x231,&, |, ^, >>, <<, ~
位运算作为控制语言太好用了。而且节省内存。

5.enum对于存储同一类型常数数据也非常好。如果能选择enum,不要选择#define。

6.extern和static会自动进行初始化0。

7.&& ||的设计非常不错,多重判断时可以很好的规避掉一些内存访问问题。

8.+=, (c = getchar()) != EOFl,条件表达式都能使得代码更加紧凑,所以推荐使用。

9.如果传的是数组首地址,最好那么形参最好是int a[],而不是int *a。
同时使用const也是一个很好的做法,使得程序更加安全。

语法注意点:
变量命名:局部变量短点好,全局变量可以长点,避免重名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值