初始化{0}的问题

时间:2022-07-07 17:30:31
int a[5]={0};
这个是初始化5个元素都是int型 0,即对应asII码值48号0这个元素---对吧

char  b[5]={0};
这个是初始化5个元素都chart型 0,即对应asII码值0号‘\0’这个元素对么。。。。



我怎么发现,我这个理解????
有很大的问题,,,跪求大神指点。。。


C 语言里 '\N' 和 N 是等价的,N 可以是值介于十进制 0~255 之间八进制、十进制、十六进制数。
这句话又怎么理解?????

6 个解决方案

#1


引用
int a[5]={0};
这个是初始化5个元素都是int型 0,即对应asII码值48号0这个元素---对吧

char  b[5]={0};
这个是初始化5个元素都chart型 0,即对应asII码值0号‘\0’这个元素对么。。。。


对的,会将这片内存用0填充

#2


引用
C 语言里 '\N' 和 N 是等价的,N 可以是值介于十进制 0~255 之间八进制、十进制、十六进制数。
这句话又怎么理解????? 


\ 是引导一个转义字符 '\123' 就相当于 ascii为 123的字符

#3


第一个 对的

第二个  不等价  '\N'  和 字母N的ascii值等价,是一个固定的数值

#4


初始化{0}的问题理解讨论之前请先学会如何 观察

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
初始化{0}的问题多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他! 初始化{0}的问题

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

#5


int a[5]={0};
这个是初始化5个元素都是int型 0,即对应asII码值48号0这个元素---对吧

不对,初始化5个元素为0,对应的ASCII值为0。

char  b[5]={0};
这个是初始化5个元素都chart型 0,即对应asII码值0号‘\0’这个元素对么。。。。

对的。

=====
以下都是数字0
0 十进制表示
00 八进制表示
0x0 十六进制表示
'\0' ascii code 0 八进制表示
'\x0' ascii code 0 十六进制表示
=====
以下都是字符'0'
48 '0' ascii code 数值十进制表示
060 '0' ascii code 数值八进制表示
0x30 '0' ascii code 数值十六进制表示
'0' ascii code
'\060' ascii code 八进制表示
'\x30' ascii code 十六进制表示

#6


都是数字0,不是'0'

对于数字,0是0,48是48.
对于字符,0是'\0',48是'0'

相同的二进制,你用不同数据类型解释它可能会显示不同的结果

#1


引用
int a[5]={0};
这个是初始化5个元素都是int型 0,即对应asII码值48号0这个元素---对吧

char  b[5]={0};
这个是初始化5个元素都chart型 0,即对应asII码值0号‘\0’这个元素对么。。。。


对的,会将这片内存用0填充

#2


引用
C 语言里 '\N' 和 N 是等价的,N 可以是值介于十进制 0~255 之间八进制、十进制、十六进制数。
这句话又怎么理解????? 


\ 是引导一个转义字符 '\123' 就相当于 ascii为 123的字符

#3


第一个 对的

第二个  不等价  '\N'  和 字母N的ascii值等价,是一个固定的数值

#4


初始化{0}的问题理解讨论之前请先学会如何 观察

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
初始化{0}的问题多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他! 初始化{0}的问题

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

#5


int a[5]={0};
这个是初始化5个元素都是int型 0,即对应asII码值48号0这个元素---对吧

不对,初始化5个元素为0,对应的ASCII值为0。

char  b[5]={0};
这个是初始化5个元素都chart型 0,即对应asII码值0号‘\0’这个元素对么。。。。

对的。

=====
以下都是数字0
0 十进制表示
00 八进制表示
0x0 十六进制表示
'\0' ascii code 0 八进制表示
'\x0' ascii code 0 十六进制表示
=====
以下都是字符'0'
48 '0' ascii code 数值十进制表示
060 '0' ascii code 数值八进制表示
0x30 '0' ascii code 数值十六进制表示
'0' ascii code
'\060' ascii code 八进制表示
'\x30' ascii code 十六进制表示

#6


都是数字0,不是'0'

对于数字,0是0,48是48.
对于字符,0是'\0',48是'0'

相同的二进制,你用不同数据类型解释它可能会显示不同的结果