Можете ли вы подумать о "программе", которая дает "разные выходы для C и компиляторов С++" (но дает согласованный вывод на одном языке)?
Различные выходные данные для разных компиляторов - C и С++
Ответ 1
Эта программа создает 12
в С++ или C99 и 6
в C89:
#include <stdio.h>
int main()
{
int a = 12//**/2;
;
printf("%d\n", a);
return 0;
}
Ответ 2
Несовместимость между ISO C и ISO С++
Общим примером является sizeof('A')
, который обычно 4 в C, но всегда 1 в С++, потому что символьные константы, такие как 'A'
, имеют тип int
в C, но тип char
в С++:
#include <stdio.h>
int main(void)
{
printf("%d\n", sizeof('A'));
}
Ответ 3
int main() { return sizeof 'a'; }
Ответ 4
typedef char X;
int main() {
struct X { double foo; }
printf("%d\n", sizeof(X));
return 0;
}
Ответ 5
Из wikipedia, измененный для получения согласованного вывода на каждом языке:
extern int T;
int size(void)
{
struct T { int i; int j; };
return sizeof(T) == sizeof(int);
/* C: return 1
* C++: return 0
*/
}
Ответ 6
int class;
Не компилируется в С++ и будет компилироваться в C.
Ответ 7
#include <stdio.h>
int main(void)
{
#ifdef __cplusplus
puts("C++");
#else
puts("C");
#endif
return 0;
}