理由不正常

时间:2013-10-17 04:48:55

标签: c++

    if  (ch1 = 'l' || 'L')
        cout << left;
    else if (ch1 = 'r' || 'R')
        cout << right;
    else
        cout << "error" << endl;

    cout << setw(++aw) << setfill(char(a)) << s1 << endl;

    if  (ch2 = 'l' || 'L')
        cout << left;
    else if (ch2 = 'r' || 'R')
        cout << right;
    else
        cout << "error" << endl;

    cout << setw(++bw) << setfill(char(b)) << s2 << endl;

    if  (ch3 = 'l' || 'L')
        cout << left;
    else if (ch3 = 'r' || 'R')
        cout << right;
    else
        cout << "error" << endl;

    cout << setw(++cw) << setfill(char(c)) << s3 << endl;

return 0;
}

我不确定为什么,但是所有3条输出线都是左对齐的。对我来说这似乎是合法的,如果在某处出现逻辑错误,或者我只是输错了

,我就不肯定。

2 个答案:

答案 0 :(得分:1)

比较应该是

if (ch1 == 'l' || ch1 == 'L')
  ch1 = left;
else if(ch1 == 'r' || ch1 == 'R')
  ch1 = right;
else
  cout << "error" << endl;

'l','r','R','L'应该是字符文字,除非你有变量l,r,L,R并且分配了适当的字符。

答案 1 :(得分:0)

当你写作时。

if (ch1 = 'l' || 'L')

这总是正确的,因为你实际上在说

assign 'l' to ch1  (whose result is always is != 0)

OR

if 'L' is not equal to zero (which always is !=0)

相反,正确的写方式是使用双=

if ( ch1 == 'l' || ch1 == 'L')

if ( toupper( ch1 ) == 'L' )