C语言笔记(数据类型)

1. 例如,在32位的数中,1+31个零,也就是意义上的-0。这是负数中的最大值。

2. 字符是有符号数

3. Sizeof 是关键字,不是函数。其作用是求出变量所占的字节数

实例:

终端显示图:

分析:由此可见,在虚拟机中int 4个字节,char 占一个字节,float4 个字节,double 8个字节。其中,经过实验,发现无论说明类型的指针变量,都是占4个字节。

4.strlen为库函数。其作用是求变量的字长,当遇到\0的时候,读取结束。

5.经典面试题:(陷阱之有符号和无符号)

  求下面的程序最终会输出多少?


   终端显示图:

分析:根据最后a[i]的各个输出,我们发现从最开始的-1-128,然后在-128-1就是到了127自己要学会计算-128-1的值),从127再到0。前面一个知识点,我们提到过当strlen遇到\0后,就会结束。而0ASCII码是NULL,也就是\0.所以,strlen就是读取的-128-127的数据,也就是255个数据长度。

 知识点:

 1.char数据范围是-128-127     2.strlen遇到\0后,就会结束。

6.经典面试题:(陷阱之有符号和无符号)

  求解有符号i +无符号j最终的输出结果为多少?

 

终端显示图:

分析:这是一道比较经典的关于有符号无符号陷阱的面试题。大部分人在看到这道题目的第一眼,会得出-10的答案。其实不然,得出这样的答案是因为我们没有看出这里的陷阱。i是无符号数,而j是有符号数。

     在计算机不同类型的数字进行运算的时候,往往会将数转换成范围较大的那个数字的类型。例如,当一个int 类型和一个 char 类型进行运算时,会将其转换成int 类型。

  那么,当有符号数据和无符号数据进行运算的时候,则会将数据转换成无符号类型的。而-20的无符号数据表示为42949676学会将有符号数据转换成无符号数据),其加上10后便得到了终端上最终输出的值。

7. volatile 防止被优化

8. Const 修饰的变量,可以被访问,但不可以被修改。(如果一定要修改,我们可以通过访问地址的方式进行修改)

   实例:

 


  

终端显示图:

分析:由上图终端显示结果,我们可以看出const所修饰的变量的值不可以轻易被改变。除非使用指针访问地址的方式外。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值