突然想到了这样一个问题,可能钻牛角尖了。
请佬回答一下,万分感谢
这样初始化是哪样初始化啊?
如果是指针定义的时候初始化为NULL,那是为了后续程序可以进行指针是否为空的判断,否则会默认为所分配地址的历史遗留值,无法预测是什么
空指针的作用主要是表示某个指针变量当前不指向任何有效的内存地址,即指向“空”。在 C++ 中,可以将指针初始化为空指针,即将其赋值为 nullptr(C++11 引入的关键字)或 0(早期的初始化方式),以便在程序运行时判断某个指针是否为空。
空指针的初始化可以用于以下情况:
我们知道:原码的表示方法:最高位作为符号位,不表示数据,0为正,1为负。
比如 [+1] = [0000 0001] (原码) [-1] = [1000 0001] (原码)
反码:正数和原码相同,负数:符号位不变,其余数位取反
[+1] = [0000 0001] (反码) [-1] = [1111 1110] (反码)
补码:正数和原码相同,负数:符号位不变,其余数位取反+1
[+1] = [0000 0001] (补码) [-1] = [1111 1111] (补码)
所以到这里,基本出来了,-1对于带符号型(以8位为例)来说用补码表示自然就是 1111 1111
对于不带符号整数来说,最高位不表示符号位,故表示255 这也是unsigned回绕机制的原理。说到底,还是计算机底层表示