这个是初始化5个元素都是int型 0,即对应asII码值48号0这个元素---对吧
char b[5]={0};
这个是初始化5个元素都chart型 0,即对应asII码值0号‘\0’这个元素对么。。。。
我怎么发现,我这个理解????
有很大的问题,,,跪求大神指点。。。
C 语言里 '\N' 和 N 是等价的,N 可以是值介于十进制 0~255 之间八进制、十进制、十六进制数。
这句话又怎么理解?????
6 个解决方案
#1
对的,会将这片内存用0填充
#2
\ 是引导一个转义字符 '\123' 就相当于 ascii为 123的字符
#3
第一个 对的
第二个 不等价 '\N' 和 字母N的ascii值等价,是一个固定的数值
第二个 不等价 '\N' 和 字母N的ascii值等价,是一个固定的数值
#4
理解和
讨论之前请先学会如何
观察!
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他! )
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他! )
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 十六进制表示
这个是初始化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'
相同的二进制,你用不同数据类型解释它可能会显示不同的结果
对于数字,0是0,48是48.
对于字符,0是'\0',48是'0'
相同的二进制,你用不同数据类型解释它可能会显示不同的结果
#1
对的,会将这片内存用0填充
#2
\ 是引导一个转义字符 '\123' 就相当于 ascii为 123的字符
#3
第一个 对的
第二个 不等价 '\N' 和 字母N的ascii值等价,是一个固定的数值
第二个 不等价 '\N' 和 字母N的ascii值等价,是一个固定的数值
#4
理解和
讨论之前请先学会如何
观察!
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他! )
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他! )
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 十六进制表示
这个是初始化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'
相同的二进制,你用不同数据类型解释它可能会显示不同的结果
对于数字,0是0,48是48.
对于字符,0是'\0',48是'0'
相同的二进制,你用不同数据类型解释它可能会显示不同的结果