这个if语句程序还是感觉有问题

img

确实对if的用法产生了一定的疑虑,不太明白和了解,有合理的解释不

a = 0,不是 a == 0
所以第一个条件不满足,并且此时a = 0了
所以执行y+=y,y = 10 + 10
所以y = 20

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/1005603
  • 你也可以参考下这篇文章:【自学】【C语言】【笔记】if函数的使用。当if表达式为数值表达式时如何判断?
  • 除此之外, 这篇博客: 选择语句--选择一个正确的它中的 if语句的语法结构 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 写法一:

    if(表达式)//表达式结果为真,语句执行,否则不执行
        语句;
    

    代码实例:

    #include <stdio.h>
    int main()
    {
    	int age = 10;
    	if (age >= 18)//结果为假,语句不执行
    		printf("成年");
        return 0}//所以打印结果为空
    

    写法二:

    if(表达式)//如果表达式为真,语句1执行,否则语句1被执行
        语句1;
    else
        语句2;
    

    代码实例

    #include <stdio.h>
    int main()
    {
    	int age = 10;
    	if (age >= 18)//语句为假,执行语句2
    		printf("成年");
    	else
    		printf("未成年");//语句2为未成年,所以打印的结果为未成年
        return 0}
    

    写法三:

    //多分支
    if(表达式1)//如果表达式1位真,语句1执行,否则看表达式2,表达式2为真,则语句2执行,否则语句3执行
        语句1;
    else if(表达式2)
        语句2else
        语句3;
    

    代码实例

    #include <stdio.h>
    int main()
    {
    	int age = 20;
    	if (age >18)//表达式1为真
    		printf("成年\n");//打印结果为成年
    	else if(age = 18)
    		printf("刚刚成年");
    	else
    		printf("未成年\n");
        return 0;
    }
    


  • 您还可以看一下 张颜源老师的2020新版C语言程序设计零基础入门小白自学编程课程中的 控制流选择结构之if & else小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    if语句是C语言中的一个控制语句,用于根据表达式的结果来执行不同的操作。if语句有三种写法,分别是单一if、if-else和多分支if-else if-else。

    单一if的语法结构为:

    if(表达式)
        语句;
    

    其中,如果表达式结果为真,则执行if后面的语句;否则不执行。例如:

    #include <stdio.h>
    int main()
    {
        int age = 10;
        if (age >= 18)
            printf("成年");
        return 0;
    }
    

    由于age小于18,表达式结果为假,所以程序不执行printf语句。

    if-else的语法结构为:

    if(表达式)
        语句1;
    else
        语句2;
    

    其中,如果表达式结果为真,则执行语句1;否则执行语句2。例如:

    #include <stdio.h>
    int main()
    {
        int age = 10;
        if (age >= 18)
            printf("成年");
        else
            printf("未成年");
        return 0;
    }
    

    由于age小于18,表达式结果为假,所以程序执行printf("未成年")语句。

    多分支if-else if-else的语法结构为:

    if(表达式1)
        语句1;
    else if(表达式2)
        语句2;
    else
        语句3;
    

    其中,如果表达式1为真,则执行语句1;否则看表达式2,如果表达式2为真,则执行语句2;否则执行语句3。例如:

    #include <stdio.h>
    int main()
    {
        int age = 20;
        if (age >18)
            printf("成年\n");
        else if(age == 18)
            printf("刚刚成年");
        else
            printf("未成年\n");
        return 0;
    }
    

    由于age大于18,表达式1为真,所以程序执行printf("成年")语句。

    最后,需要注意的一点是,if语句内的等号是用于比较的,而不是赋值。如果只写一个等号,编译器不会报错,但是程序的结果却可能跟预期不同。如果要赋值,则需要使用双等号,如: age == 18。