这是一个可能的重复问题:void main和int main有什么区别?
为什么
void main() {
//return void
}
有问题吗?
前几天我输入了这个,但有人指出这样做是错误的。我很困惑。我已经写了一段时间了,虽然我知道这不符合C++标准,但编译器并没有发出任何警告。为什么这是错的呢?
void main() {
//return void
}
有问题吗?
前几天我输入了这个,但有人指出这样做是错误的。我很困惑。我已经写了一段时间了,虽然我知道这不符合C++标准,但编译器并没有发出任何警告。为什么这是错的呢?
仅因为您使用的编译器未报错,并不意味着其他编译器也不会报错。毕竟,这不是标准写法...
这是错误的,因为它不符合标准。一个编译器可能会接受它,另一个可能会抱怨,而拘泥于标准的信徒们无论如何都会批评你。
每个程序都应该向其他程序指示它是否成功完成或者出现了某种错误,如果你的主函数不返回任何内容,那么你无法做到这一点。
此外,标准规定main函数应该返回一个整数。
int main() { /* ... */ }
和int main(int argc, char* argv[]) { /* ... */ }
。”x = x++ + --x;
虽然在某些情况下(无论您对“工作”的定义是什么)可能有效,但这并不意味着这是一个好主意 :-)
这是非标准的。
也就是说,当你写这个时,你并没有按照C++的原意来写。它可能看起来像C++,但你没有遵循规则,所以你实际上并没有在写C++。
此外,在大多数情况下,它的结果是未定义的。
与其他语言(如C++或C#)不同,"错误"行为会导致错误,在C++中,当使用错误的结构时,任何事情都可能发生。因此,你不能依赖编译器做出"正确"的事情,因为它可能有一次这样做,但另一次不这样做。
总的来说,你应该避免未定义的行为,所以你不应该这样做。