不是的。全局变量还是局部变量都可以初始化或者不初始化化 ,语法没有对这有要求。
但是到实际情况是根据你写的代码来分析。
你写的int total = 0;
在你不初始化报错的原因是,int total;
total是没有赋值的一个变量,那他的值就是分配内存中残留的值,属于错误的数据。
你后面用到total+=num[j].一个错误的数据做操作就报错了,就算不报错,你得到的结果是不正确的。
所以在你这个情况,赋值为0 。并不是语法规定。
全局变量,
“局部变量要初始化,全局变量不要初始化”这个不一定的,还要看编译器的,
如果编译器要求初始化那就按要求来做