黑马程序员技术交流社区

标题: 三目运算符的表达式2和表达式3可以是语句块吗? [打印本页]

作者: qiujunwen123    时间: 2015-12-12 23:32
标题: 三目运算符的表达式2和表达式3可以是语句块吗?
三目运算符的表达式2和表达式3可以是语句块吗?
我试了两个语句是可以执行的,语句块好像不行,有没有成功的?
#include<stdio.h>
int main(){
        int a,b;
        scanf("%d",&a);
        scanf("%d",&b);
        int temp=0;
        //尝试三目运算符是否支持语句块?
        a<b?{temp=a;a=b;b=temp;printf("%d>%d",a,b)}:{printf("%d>%d",a,b)}
        //根据a,b大小,进行大数在前,小数在后输出
        return 0;
}


作者: alen2015    时间: 2015-12-13 00:29
可以,因为你的代码快结束时是printf函数去答应,代码快结束后局部变量全部销毁,两个代码快等同于两个printf函数,printf函数的返回值是整型,符合三目运算符表达式的要求规范,所以以上三目运算符是正确的!
作者: qiujunwen123    时间: 2015-12-13 10:30
#include<stdio.h>
int main(){
        int a,b;
        scanf("%d",&a);
        scanf("%d",&b);
        int temp=0;
        //尝试三目运算符是否支持语句块?
        a<b?{temp=a;a=b;b=temp;printf("%d>%d",a,b);}:{printf("%d>%d",a,b);}
        //根据a,b大小,进行大数在前,小数在后输出
        return 0;
}




那为什么编译报错呢?
作者: qiujunwen123    时间: 2015-12-13 10:32
#include<stdio.h>
int main(){
        int a,b;
        scanf("%d",&a);
        scanf("%d",&b);
        int temp=0;
        //尝试三目运算符是否支持语句块?
        a<b?{temp=a;a=b;b=temp;printf("%d>%d",a,b);}:{printf("%d>%d",a,b);}
        //根据a,b大小,进行大数在前,小数在后输出
        return 0;
}




那为什么编译报错呢?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2