#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <unistd.h>
int main(){
while(1){
int temp = rand();
int mod = temp % 7;
for(int i=0; i<mod; i++){
std::cout<<temp<<" ";
}
std::cout<<"\n";
//usleep(90000);
sleep(1);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我很好奇,如果您取消注释usleep(9000),为什么还会打印额外的换行符vs sleep(1)。
它与睡眠无关。
当rand()
返回可除以7的值时,的值为mod
0。
该for
循环不执行,而是一个新的换行符仍然在循环后输出。
std::cout<<"\n";
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码调试结果:
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <unistd.h>
int main(){
while(1){
int temp = rand();
int mod = temp % 7;
std::cout<<"["<<mod<<"]";
for(int i=0; i<mod; i++){
std::cout<<temp<<" ";
}
std::cout<<"\n";
sleep(1);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)