"左值作为赋值的左操作数"需要"错误"

Ski*_*zit 3 c

以下代码生成"作为赋值左操作数所需的左值"

if( c >= 'A' && c <= 'Z'  || c = " " || c = ",") {
Run Code Online (Sandbox Code Playgroud)

我假设我写错了,出了什么问题?我怎么写得正确?

Mic*_*nen 12

你应该为chars使用单引号,并为了相等而使用double equals(否则它会改变c的值)

if( c >= 'A' && c <= 'Z'  || c == ' ' || c == ',') {
Run Code Online (Sandbox Code Playgroud)

此外,您可能会考虑这样的事情来使您的布尔逻辑更清晰:

if( (c >= 'A' && c <= 'Z')  || c == ' ' || c == ',') {
Run Code Online (Sandbox Code Playgroud)

虽然你的布尔逻辑结构可以等效地工作(&&优先于||),但是这样的事情可能会在未来引起你的兴趣.

  • FWIW,我会使用`("A" <= C &&ç<="Z")`,使逻辑的该位清楚地表明,"A"和"Z"是"外部"边界和具有表达最类似于数学风格'A'<= c <='Z' (2认同)