【发布时间】:2018-07-12 16:06:41
【问题描述】:
我对 C 不是很熟悉,所以我对语言的类型安全有点困惑。
例如。
char* my_pointer;
my_pointer = malloc(sizeof(char));
if (*my_pointer == 0b0000)
{
// this might be true or false, doesn't matter
}
代码是怎么运行的?为什么它不在*my_pointer == 0b0000 爆炸?
*my_pointer 不应该返回一个字符吗?
所以从技术上讲,不应该只有像 *my_pointer == 'a' 这样的东西能够工作吗?
【问题讨论】:
-
当你取消引用 my_pointer 时你会得到一个 char,但随后它被提升为 int 与其他值一样
-
@martin 哇,我想你可能正在做点什么。不幸的是,由于我是 C 的菜鸟,也许对您提到的内容进行更深入的解释是我很乐意接受的答案。
-
标准 C 规则在这里不适用,因为二进制整数常量
0b0000不是语言的一部分。 -
SO 不能代替初学者的课程。你应该拿一本 C 教科书,了解基本类型和转换规则。
标签: c type-promotion