GAN*_*ANI 2 c conditional loops if-statement while-loop
考虑以下计划.我想知道为什么这些代码以不同的方式表现.提前提前.
这不打印任何
#include <stdio.h>
int main() {
int i = 0;
while(i < 10) {
if(i < 7)
printf("value is%d", i++);
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这样做
#include <stdio.h>
int main() {
int i = 0;
while(i < 10) {
if(i < 7)
printf("value is%d\n", i++);
}
}
Run Code Online (Sandbox Code Playgroud)
首先请注意,您的程序永远不会退出 当它i
击中7
它的游戏时,你的卡住永远无所事事.
第二个注意事项唯一的区别是打印一个新行.这应该是你的线索.由于循环是无限的,你永远不会打印新的行或退出 - 两个东西都冲洗STDOUT.直到你刷新STDOUT,你只是在缓冲区中累积你想要打印的内容.只有冲洗才会在屏幕上显示,并清洁缓冲区.
@chux增加了一个好点:
STDOUT(或IN或ERR)的缓冲是实现定义的,意味着Linux,Windows等的不同风格可能显示不同的行为.显然在OP STDOUT中是缓冲的 - 因为没有输出.
归档时间: |
|
查看次数: |
81 次 |
最近记录: |