sje*_*397 2 c++ variable-assignment conditional-statements
为什么这样可以:
\n\nif(int i = 1) {\n}\nRun Code Online (Sandbox Code Playgroud)\n\n...而以下会产生错误?
\n\nif((int i = 1)) {\n}\nRun Code Online (Sandbox Code Playgroud)\n\n在 g++ (4.4.5) 下,后者给出:
\n\n\n\n\ntest.cpp:7: 错误: 预期的主表达式在 \xe2\x80\x98int\xe2\x80\x99
\n
\n test.cpp:7: 错误: 预期的 \xe2\x80\x98)\xe2\x80\x99 之前\xe2\x80\x98int\xe2\x80\x99
\n test.cpp:9: 错误: 预期 \xe2\x80\x98)\xe2\x80\x99 在 \xe2\x80\x98else\xe2\x80\x99 \
之前n test.cpp:13: 错误:\xe2\x80\x98}\xe2\x80\x99 标记之前预期的主表达式
\n test.cpp:13: 错误:预期 \xe2\x80\x98;\xe2\x80 \x99 位于 \xe2\x80\x98}\xe2\x80\x99 标记之前
顺便说一句,我问的原因是因为这个答案:Seeing what class an object is
\n\n我正在尝试找到一种方法使条件更具可读性。通常,我更喜欢,例如:
\n\nif((x = y) != 0) {\nRun Code Online (Sandbox Code Playgroud)\n\n到
\n\nif(x = y) {\nRun Code Online (Sandbox Code Playgroud)\n\n...因为它更具可读性并且使编译器“注释”静音,表明我可能使用了错误的运算符。如果我使用声明作为条件,它不会产生警告,但可读性似乎仍然受到影响。
\n这是因为 C++ 标准 6.4 p1。
选择语句选择多个控制流之一。
选择声明:
if ( condition ) statement
if ( condition ) statement else statement
switch ( condition ) statement
Run Code Online (Sandbox Code Playgroud)
健康)状况:
expression
type-specifier-seq declarator = assignment-expression
Run Code Online (Sandbox Code Playgroud)