[英]C++ static and non-static variable declaration in if condition
如果条件在Visual Studio C ++中编译,则以下内容:
if(int x = 5) { std::cout << x; } 1
和
if(static int x = 5) { std::cout << x; } 2
另一方面,gnu编译器只编译第一个。 从测试来看,似乎变量的范围恰好在if条件下。
但是,由于Visual Studio编译了两个版本,我想知道是否有任何差异?
根据C ++标准,GNU是正确的,VisualStudio做错了。 遵循6.4 / 1:
condition:
expression
type-specifier-seq declarator = assignment-expression
允许使用type-specifier-seq ,它不能包含存储类说明符,例如static
。 要查看type-specifier-seq可以有什么,请阅读此内容 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.