我在 C 中遇到了一个表达式,例如
typeof((c) + 1) _tmp = c;
这到底是什么意思?
感谢回复。
只有一个疑问?如果 c 的类型是 struct 而不是原始类型,那么 +1 会做什么?
最佳答案
普通 C(而非 C++)中的 typeof
运算符是 GCC 对标准的补充。它告诉编译器您要使用括号中表达式的类型。
使用 typeof
如上所述,您可以声明您或在该上下文中未知类型的变量,使用另一个变量的类型作为引用。也可用于类型转换。
typeof
中的+
操作有一个特殊的效果。 typeof((c) + 1)
表示“c 的类型或 1 的类型,以提升后保留的那个为准”。请记住,例如,当用于涉及整数的操作时,字符会被提升为整数,整数会被提升为 float , float 会被提升为 double ,等等。
因此,typeof(int_variable + char_variable)
是 int
,因为 char
将被提升为 int
执行操作。
请注意,只有编译器可以解决这个问题:typeof
不求值,它没有值,在运行时什么也不会发生。
typeof
的完整描述可以是found here .
关于c - 什么是 C 中的 typeof((c) + 1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436889/