C 和 C 有很多不同之处,并非所有有效的 C 代码都是有效的 C 代码。 (“有效”是指具有已定义行为的标准代码,即不是特定于实现/未定义/等。)
当使用每种语言的标准编译器编译时,在 C 和 C++ 中都有效的一段代码是否会产生 不同的行为?
为了使它成为一个合理/有用的比较(我试图学习一些实际有用的东西,而不是试图在问题中找到明显的漏洞),让我们假设:
#ifdef __cplusplus
以下在 C 和 C 中有效,将(很可能)i在 C 和 C 中产生不同的值:
i
int i = sizeof('a');
这篇文章的另一个:
#include <stdio.h> int sz = 80; int main(void) { struct sz { char c; }; int val = sizeof(sz); // sizeof(int) in C, // sizeof(struct sz) in C++ printf("%d\n", val); return 0; }