0
    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 条输出线都是左对齐的。对我来说这似乎是合法的,如果某处存在逻辑错误或者我只是输入错误,我不肯定

4

2 回答 2

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 并分配了适当的字符。

于 2013-10-17T04:58:57.327 回答
0

当你写例如

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

这将永远是正确的,因为您实际上是在说

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

或者

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

相反,正确的编写方法是使用 double=

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

或者

if ( toupper( ch1 ) == 'L' )
于 2013-10-17T06:20:59.583 回答