这个字符串会被打印多少次?

Eli*_*iel 3 c

我在考试中看到了这段代码:问题是这个字符串的打印次数.

我首先想到它会是10次,但这是错误的.有人能告诉我为什么我的答案是错的.这是C语言代码的一部分.

for (float x = 100000001.0f; x <= 100000010.0f; x += 1.0f) {
    printf("lbc");
}
Run Code Online (Sandbox Code Playgroud)

Kam*_*aze 7

假设x是一个32位浮点:

浮点值的分辨率有限.1000000011*10^8你最后失去了你1.如果要添加1,它会再次丢失,因为下一个浮点值是1.00000008*10^8.您可以根据需要添加任意数量的1s,结果将始终相同.

这就是为什么你的代码是无限循环的原因.


mch*_*mch 5

float x = 100000001.0f;
Run Code Online (Sandbox Code Playgroud)

x使用最近的可表示进行初始化float,即100000000.添加1此值将导致相同的值.

如果您打印x循环中的值,您将看到发生了什么:http://ideone.com/3FJGTz