Bre*_*ale 8 c c++ variables initialization comma
这似乎是一个简单的问题,但是我没有用我自己的风格检查过多少年......当初始化用逗号分隔的变量时,我认为以下是不安全的做法:
unsigned int n = foo.size, nxn = n * n;
因为我实际上并没有使用逗号运算符作为语法糖等; 而是表明两个表达式是独立的 - 作为对'细粒度并行'(或表达式独立性)的一种隐式评论,通常会使代码更简洁,例如,
if (<some condition>)
a = true, b = value;
Run Code Online (Sandbox Code Playgroud)
而不是要求{}分号分隔表达式的范围.
但我的问题是重新检查变量初始化的情况.我的假设是不正确的,nxn不能依赖于按预期初始化?或者我一直在误解?
声明中的每个init-declarator都会被单独分析,就好像它本身就在声明中一样.[...]
我们明白了
unsigned int n = foo.size, nxn = n * n;
Run Code Online (Sandbox Code Playgroud)
是相同的
unsigned int n = foo.size;
unsigned int nxn = n * n;
Run Code Online (Sandbox Code Playgroud)
有一个注释,其他规则有例外,auto如果名称影响类型,但在这种情况下不适用.
如果将多个变量放在一行上,请对指针保持警惕
int * foo, bar;
Run Code Online (Sandbox Code Playgroud)
不会给你两个指针.相反,foo是一个指针,bar是一个int.你需要
int * foo, * bar;
Run Code Online (Sandbox Code Playgroud)
得到两个指针.出于这个原因,我更愿意使用
int * foo;
int * bar;
Run Code Online (Sandbox Code Playgroud)
并为安全起见支付额外的keystorkes.