ai睡的熊
2015-06-10 14:57
采纳率: 100%
浏览 2.0k
已采纳

c语言左操作必须为左值

#include

void main()
{
char a;
scanf("%c",&a);
a>64 &&a96 && a }
这样输入是正确的,
#include

void main()
{
char a;
scanf("%c",&a);
a>64 &&a96 && a<123 ? printf("%c",a) : a=a+32 , printf("变换:%c",a);
}
这样就会提示错误,错误为

error C2106: '=' : left operand must be l-value

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 一路向北-bruce 2015-06-10 15:07
    已采纳

    a>64 && a!= 96 && a<123 ? printf("%c",a) : ( a = a+32 ), printf("变换:%c",a);加上括号即可

    已采纳该答案
    打赏 评论
  • frank_20080215 2015-06-10 23:52

    三者表达式中,冒号左右都只能是一个表达式

    打赏 评论
  • 一路向北-bruce 2015-06-11 05:00

    回复qw502460751: c语言中三目运算符中的三个表达式必须为右值,也就是相当于()?():(),括号的内部如果是右值表达式,可以省去括号,括号内部若有左值表达式,需要进行左值到右值的转换,括号的优先级实现了这一转换,因此括号不可省略,这个问题也可以归结为 c = a = a+2, printf("%d",a) 与 c = ( a = a+2, printf("%d",a) ),因此,避免这种问题的方法是:加括号(在你觉得可能出现问题的地方)

    打赏 评论

相关推荐 更多相似问题