C语言中的SimpleFor循环突然崩溃程序
我正在使用MSVC通过C语言中的SimpleFor循环突然崩溃程序,c,loops,modulo,C,Loops,Modulo,我正在使用MSVC通过 cl file.c 使用以下非常简单的代码: #include <stdio.h> #include <stdlib.h> int main(void) { int num = 50, pointNum = 60, max = 0; puts("Hello"); for (int i = 0; i <= num; i++) { printf(&quo
cl file.c
使用以下非常简单的代码:
#include <stdio.h>
#include <stdlib.h>
int
main(void) {
int num = 50, pointNum = 60, max = 0;
puts("Hello");
for (int i = 0; i <= num; i++) {
printf("%d\n", pointNum % i);
}
return 0;
}
#包括
#包括
int
主(空){
int num=50,pointNum=60,max=0;
放置(“你好”);
对于(int i=0;i当i==0
时,您执行数学60%0
,它会触发被零除。这会触发未定义的行为,这通常会使程序崩溃。在循环的第一次迭代中,除数是0。但是被0除是不可能的。因此,它只是崩溃。我认为不是这个代码片段你应该使用
for (int i = 1; i <= num; i++) {
printf("%d\n", pointNum % i);
}
for(int i=1;我能告诉你为什么你认为它崩溃了吗?它会在屏幕上打印一些文本吗?如果会,你能分享这些文本吗?@BillLynch我不知道它为什么会崩溃。它只打印“Hello”(put语句),但在循环中暂停,然后崩溃。对,它什么也不打印吗?它会打印字符串“segmentation fault”?它是否打印字符串“嗨,我崩溃了!”?@BillLynch它没有打印字符串分段错误,可能是因为我只是使用记事本++和命令行。所以我没有任何线索。你以I
等于0
开始一个循环,然后你在循环中做的第一件事就是除以I
…所以你是除以零…它不是那么无错误。它会导致未定义的behaviour-任何其他结果也是可能的