C 基于类型的字节识别
我目前正在观看斯坦福大学的一门名为“编程范式”的在线课程,并就教授刚刚教授的一个主题提出了一个问题 比方说,我将C中的short初始化为,C 基于类型的字节识别,c,C,我目前正在观看斯坦福大学的一门名为“编程范式”的在线课程,并就教授刚刚教授的一个主题提出了一个问题 比方说,我将C中的short初始化为,short C=16649对应的位模式为,0100001000001001 如果我愚弄一个指针,让它相信它只是一个像这样的char*,*(char*)&s,我不应该得到s的高位,它将对应于01000010的位模式,或者“a”吗 试图打印上一行所指的值会给我一个',而不是65。正在寻找为什么会出现这种情况的解释 谢谢上限或下限取决于表示的结尾。@nnovich好
short C=16649代码>对应的位模式为,0100001000001001
如果我愚弄一个指针,让它相信它只是一个像这样的char*
,*(char*)&s
,我不应该得到s的高位,它将对应于01000010
的位模式,或者“a”吗
试图打印上一行所指的值会给我一个'
,而不是65。正在寻找为什么会出现这种情况的解释
谢谢上限或下限取决于表示的结尾。@nnovich好的,在评论中回答简单问题是比较常见的。这可能反映出评论者认为不值得花时间写一个答案,或者这个问题对于网站来说是边缘问题,不值得正式回答,或者怀疑它已经被问过并回答过了。“如果我骗过一个指针,让它相信它只是一个像这样的char*
,*(char*)&s
,我是否应该返回s的高位,它将对应于01000010或“A”的位模式?“-->否。它是UB。@nnovich OK,您可以利用它自己编写一个完整的答案。但要确保它不仅仅是重复评论,还要提供全面、完整和解释清楚的信息。@EugeneSh。我在指针转换部分得到了很好的纠正:“当指向对象的指针转换为指向字符类型的指针时,结果指向对象的最低寻址字节。”C11§6.3.2.3 7。下一个问题是用*
引用该指针。如果这是对无符号字符的引用,那么就没有问题了。另一个问题是char
。当然,这可能不是问题。IAC,最好编写兼容的代码。在调查字节时,请使用无符号字符
或uint8\u t
。