i++和++i命令的区别

++ i 是先加后赋值;i ++ 是先赋值后加;

正常情况下,执行完毕,两种等价,例如:

int i=1;

i++;

int i=1;

++i;

执行完毕,i的值均为2。

但是在复合的表达式中、函数调用中却有明显区别。

i++,表示先取i的值进行表达式计算或函数调用,最后加法再计算 i=i+1;

++i,表示先加法计算i=i+1,然后在进行表达式计算或函数调用。

直接放代码:

#include <stdio.h>

int main() {
    int i = 1;
    int a = i++;
    printf("%d\n", a); //a=1,因为i++是先调用再自增
    int o = 1;
    int b = ++o;
    printf("%d", b);//b=2,因为++o先自增再调用
}

if选择语句

if选择结构是根据条件判断之后再做处理的一种语法结构

if(条件) {
  代码块 //条件成立之后要执行的代码。可以是一条语句,也可以是一组语句
}

关键字if后小括号里的条件是一个表达式,而且表达式的值必须为true或者false

当if关键字后的一对大括号里面只有一个语句时,可以省略大括号,但是为了避免有多个语句时遗忘大括号,以及保持程序整体风格一致,建议不要省略if结构块的大括号

if-else结构

int main() {
    if ()
    {

    } else
    {


	}
}

if语句里面的表达式成立时会执行if语句代码块内的代码,如果不成立,会执行else代码块内的代码

else块最多有一个或者没有

switch语句

image-20220718102941741

#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a); //输入语句
    switch (a) {
        case 1:
            printf("A\n");
            break;
        case 2:
            printf("B\n");
            break;
        case 3:
            printf("C\n");
            break;
        case 4:
            printf("D\n");
            break;

    }
    \\不要忘记加break,如果咱们不加break
     \\ 输入1,成立,会直接把ABCD全部输出,输入2,会把BCD全部输出,以此类推
    return 0;
}

不写break的情况:

image-20220718103612841

首页 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目练习

image-20220718104029243
#include <stdio.h>

int main(void) {
    int n;
    scanf("%d", &n);
    if ((n % 100 != 0 && n % 4 == 0) || (n % 100 == 0 && n % 400 == 0))
    {
        printf("是闰年");
    }else
    {
        printf("不是闰年");
    }
    return 0;
}