Avatar ·

标题:既能在C中又能在C++中正确编译的代码,行为会不同吗?

大家好!我是一名初学C++的开发者,但在大学里我们被迫用C写代码。现在我注意到一个奇怪的现象:有时同样的代码在C和C++中都能编译,但运行结果却完全不同。例如,我写了一个小程序,用sizeof比较字符串字面量和指针。 代码如下: ```c #include int main() { char arr[] = "Hello"; char *ptr = "Hello"; if (sizeof(arr) == sizeof(ptr)) { printf("大小相等\n"); } else { printf("大小不同\n"); } return 0; } ``` 在C++中我得到"大小不同",在C中也是"大小不同",但我听说有些例子中行为会截然不同。有没有可能一段代码在C和C++中都有效,但行为却不同?如果有,请给出具体例子并解释。提前感谢! <<>>

是的,这样的代码存在:经典例子是隐式转换void