在 Visual Studio 2012 控制台应用程序中执行以下程序时:
#include <stdio.h>
int main() {
int integer1, integer2, sum;
char str[5];
scanf("%s",str); /* Try to enter 10 chars */
printf("%s\n",str);
printf( "Enter first integer\n" );
scanf( "%d", &integer1 );
printf( "Enter second integer\n" );
scanf( "%d", &integer2 );
sum = integer1 + integer2;
printf( "Sum = %d\n", sum );
return 0;
}
它抛出一个异常“StackOverFlow”,这很明显,因为语句:
scanf("%s",str); /* Try to enter 10 chars */
我的问题是:为什么程序继续执行(通过打印 str 字符串,要求输入 2 个整数,将它们相加并打印结果)即使异常应该更早发生?