我的问题出现在以下代码中:
static void Main(string[] args)
{
int a = int.Parse(Console.ReadLine());
int div1 = 5/a; // a isn't Unknown until Runtime,
// if a==0, Runtime error occurred. it's Ok!
a = 0;
int div2 = 10/a; // local variable a's Value is zero
// and not exist any sentence
// between "a=0;" and "int div2=10/a;" to change variable a,
// why Runtime Error occurred instead of Compile Error?
}
提前感谢您的回答。 我为英语写作不好而道歉,因为英语是我的第二语言。
答案 0 :(得分:0)
因为只有在运行时变量a
中,才会为其分配值0
,因此除法将因DivideByZero
异常而失败。
尝试执行此操作int div2 = 10 / 0;
,并会看到编译器在现场抛出红色波浪形错误。
如果您将int a
声明为constant
,则情况也是如此
constant int a = 0;
int div2 = 10 / a;
那是因为,在编译时;编译器只会在引用它的地方替换常量值,这与将其直接除以0
相同。所以下面的行
int div2 = 10 / a;
将成为
int div2 = 10 / 0;