A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nooooy 中级黑马   /  2012-7-8 01:39  /  2423 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int age = 15;
            char sex = 'f';
            if (age<10)
                if (sex =='f')
                {
                    Console.WriteLine("小女人");
                }
                else {
                    Console.WriteLine("你长大了");
                }

                    Console.ReadKey();

为什么我总觉得有错。。if后面可以直接再跟一个if吗? 这样会不会有冲突?{:soso_e132:}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

13 个回复

倒序浏览
没有问题啊……if后面可以跟if……

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
问题是你这段程序干什么用的,if语句可以嵌套if语句,但在默认情况下,else语句总是和最近的if语句配对,所以这段程序没有输出结果,是不是需要有大括号{}包含第二个if语句。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
这样写是没有任何问题的,如果你感觉不明朗,你可以给第一个if也加花括号的,还有在这里你要将age的值改变,写成==15,不然不会得到结果,代码如下:
            int age = 15;
            char sex = 'f';
            if (age == 15)
            {
                if (sex == 'f')
                {
                    Console.WriteLine("小女人");
                }
                else
                {
                    Console.WriteLine("你长大了");
                }
            }
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
如果你要是认为有错的话 就是你这个不会输出任何东西{:soso_e100:}
其实你要是把 if (age<10)加上大括号的话 你就能把IF结构理清楚
当然这样也是可以的 只是编程习惯的问题

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
int age = 15;
            char sex = 'f';
            if (age < 10)
            {
                if (sex == 'f')
                {
                    Console.WriteLine("小女人");
                }
            }
            else
            {
                Console.WriteLine("你长大了");
            }

            Console.ReadKey();
上面是修改后的代码希望对你有所启发,你的代码的意思应该是这样吧?
if age<10 和 sex='f' 就是小女人
否则age>10 就是你长大了。
如果你不加第一个if{}的话,age>10就直接 Console.ReadKey();什么也没有,你的else也是多余的
所以再以后用的时候一定要规范写代码,这样就不会产生不必要的错误

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
这样写没有错,但是不符合C#编程规范,建议if后加{}养成良好编程习惯。写程序哪点不确定时,可以设立一个断点单步执行,很容易找出问题的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
没有问题的,int age = 15;
            char sex = 'f';
            if (age<10)
                if (sex =='f')
                {
                    Console.WriteLine("小女人");
                }
                else {
                    Console.WriteLine("你长大了");
                }

               Console.ReadKey();
if()后只运行挨着最新的程序!以后的就不归if管了!
如:if(sex>0)
        console.write("只运行到这里!");
console.write("这个就不运行!!");

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我感觉写的也没问题,只不过条理不太清晰,if嵌套if是不会有冲突的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
没错!if后如果不加{}则表示if后的以;为分割的部分为条件体,你第一个if后面的if else 是一句话,所以没错!
回复 使用道具 举报
if和if的使用嵌套式不会出问题的,但if如果没加{}那么他就只执行if下的一句代码,所以,一般使用都用{}把要循环的代码给{}起来!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
肯定是有问题的,
首先if后面如果要嵌套if的话最好使用{}不然会造成程序出错,你这个程序最后结果是什么也没有显示,原因是:
1.age因为已经有初始值,所以第一个if不会执行
2.if语句的作用域当没有{}的时候执行在第一个分号结束,所以第二的if也不会执行
3.else匹配遵循就近原则,即else只匹配与它最近的if,所以else与第二的if匹配,并且都在第一个if的作用域里面,所以else也不会执行

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马