1
90
子表达式的计算顺序,包括
是 未指定 例如
|
2
37
SDCC 29.7/UCSIM/Z80标准
printf崩溃。“奥欧 GCC 4.4@x86_64-suse-linux
GCC 4.4@x86_64-suse-linux(-o2)
clang 2.7@x86_64-suse-linux
open64 4.2.3@x86_64-suse-linux
英特尔11.1@x86_64-suse-linux
Turbo C++/DOS/小内存
Turbo C++/DOS/媒体存储器
Turbo C++/DOS/紧凑型存储器
CL65@Commodore PET(副仿真器) alt text http://i34.tinypic.com/2hh0zmc.png 稍后我将更新这些: WindowsXP上的Borland C++ Builder 6
Visual Studio Express 2010 C++CLR,Windows 7 64位 (必须编译为C++,因为CLR编译器不支持纯C)
MingW64(GCC-4.5.2预中继) —— http://mingw-w64.sourceforge.net/
64位Windows使用LLP64模型:两者都使用
AVR GCC 4.3.2/ATMEga168(Arduino Diecimila) 失败的假设是:
ATMega168有一台16位PC,但代码和数据在不同的地址空间中。更大的atmega有一台22位的PC!. GCC 4.2.1关于MacOSX 10.6,用-arch ppc编译
|
3
24
很久以前,我在一本教科书上教C
作为一个示例问题。对一个学生来说失败了,因为
|
4
15
你需要包括
例如,在句法上是合法的,但根据太多的事情而产生不同的结果。
任何有
|
5
8
非常有趣! 我能想到的其他事情可能有助于检查:
嗯。我会再想一想的。 编辑: 为优秀的C FAQ添加了一些清晰的链接。 |
6
5
我认为你应该努力区分两种截然不同的“错误”假设。好的一半(右移位和符号扩展、与ASCII兼容的编码、内存是线性的、数据和函数指针是兼容的等)是相当合理的假设
最
如果C是在今天被设计的,如果我们没有IBM旧货的继承权,甚至可能被包括在标准中。另一半(与内存别名有关的事情,当输入和输出内存重叠时库函数的行为,像指针这样的32位假设适合
|
7
4
好吧,经典的可移植性假设还没有意味着
|
8
4
|
9
4
这是一个有趣的例子:这个函数有什么问题?
[答(ROT13):网络中的inevnqvp nethzragf borl gur byq x&e cebzbgvba ehyrf,juvpu zrnaf lbh pnaabg hfr'sybng'(be'pune'be'fubeg')va!Naq Gur Pbzcvyre VF Erdhverq ABG GB Gerng Guvf NF N Pbzcvyr Gvzr Reebe公司。(TPP QBRF RZVG N JNEAVT,Gubhtu.)] |
10
4
另一个是关于文本模式
以下是我的结果: x86-64上的GCC(Ubuntu 4.4.3-4Ubuntu5)4.4.3
|
11
3
其中一些很难在C内部进行测试,因为程序可能会在假设不成立的实现上崩溃。 “可以对指针值变量执行任何操作。它只需要包含一个有效的指针值,如果您取消对它的引用。”
与整型和浮点型相同(除
“整数计算环绕。所以这个程序打印一个大的负整数。”
(仅限于C89)“从
|
12
3
包括对整数大小的检查。
大多数人认为int是
大于空头大于空头
烧焦。然而,这些可能都是
假:
此代码可能会失败(崩溃到未对齐的访问)
|
13
3
关于内置数据类型的几个方面:
诚然,在 最 机器我们有两个补码和IEEE754浮点数。 |
14
3
编辑:更新到程序的最新版本 Solaris SPARC GCC 3.4.6,32位
GCC 3.4.6,64位
和Sunstudio 11 32位
和Sunstudio 11 64位
|
15
2
这个怎么样: 任何数据指针都不能与有效的函数指针相同。 对于所有平面模型、MS-DOS小型、大型和大型模型,这是正确的;对于MS-DOS小型模型,这是错误的;对于中型和小型模型,这几乎总是错误的(取决于加载地址,您需要一个真正老的DOS来实现这一点)。 我不能为这个写测试 更糟的是:可以比较指向ptridff的指针。这对MS-DOS大型模型来说是不正确的(大型和大型之间的唯一区别是大量添加编译器代码来规范化指针)。 我不能写一个测试,因为在这样的环境中,这个炸弹很难分配一个大于64K的缓冲区,所以演示它将在其他平台上崩溃的代码。 此特定测试将通过一个现已失效的系统(注意,这取决于malloc的内部结构):
|
16
2
可以使用文本模式(
当这个
应该
理论上讲,如果你也使用
|
17
1
在AIX5.3上的GCC 3.3.2(是的,我们需要更新GCC)
|
18
1
一个假设,有些可能在C++中是这样的
C++结构:
|
19
1
不同系统上的标准数学函数不能给出相同的结果。 |
20
1
32位x86上的Visual Studio Express 2010。
|
21
1
通孔
Codepad.org
(
注意,代码板没有
|
22
1
以过多的数量进行正确的转换——这是标准允许的,还是值得测试的? 标准C是否规定了以下程序的行为: void print_string(char *st) { char ch; while((ch = *st++) != 0) putch(ch); /* Assume this is defined */ } int main(void) { print_string("Hello"); return 0; } 在我使用的至少一个编译器上,除非要打印字符串的参数是“char”,否则该代码将失败。 康斯特 *标准是否允许这样的限制? 有些系统允许一个生成指向未对齐的“int”的指针,而其他系统则不允许。可能值得测试。 |
23
0
对于那些必须把C技能翻译成Java的人来说,这里有几个窍门。
在爪哇,CHAR是16位并签名。字节为8位,有符号。
long始终是64位的,引用可以是32位或64位(如果您有超过32 GB的应用程序)64位JVM通常使用32位引用。
转换被屏蔽,因此I<<64==I==I<<-64,I<<63==I<<-1
byteorder.nativeorder()可以是大的或小的
无论JVM是32位还是64位,集合和数组的大小始终是32位。
char是16位,short是16位,int是32位,long是64位。 |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |