请问gcc在编译的时候改变字符的问题
c语言吧
全部回复
仅看楼主
level 6
浅草三国 楼主
我给字符数组的最后一个下标赋值了'\0',结果在运行时变成了'\000'。
2022年09月18日 10点09分 1
吧务
level 14
'\0'和'\000'没有区别
2022年09月18日 10点09分 2
但%s判定的时候好像有区别。
2022年09月18日 10点09分
吧务
level 14
1.\0和\000是同一个值的两种不同表示方式
2.你在哪里看到的它变成了\000?
2022年09月18日 10点09分 3
在给字符数组元素赋值的时候,最后一个元素赋完'\0'后看ASCII码是0,但值却变成了`\000'了,再查看字符数组时字符数组的最后一个元素直接被删除,然后printf("%s", characterarray)就直接不能打印了。
2022年09月18日 15点09分
@浅草三国 “值却变成\000”从哪里看到的?用什么看到的?\000就是\0,不存在什么\000就无法输出字符串,同一种红色果实难道因为叫番茄还是叫西红柿吃起来就不一样吗?
2022年09月18日 16点09分
@GTA小鸡 gdb里看到的。
2022年09月19日 01点09分
@浅草三国 gdb调试器里非打印字符会显示成三位八进制形式,这很正常。你输出不了字符串是因为代码写得有问题,不是因为gdb把\0显示成了\000。
2022年09月19日 01点09分
1