1. 运算符的表示

  • 用逻辑运算符代替ifelse if等条件语句 可使写出来的代码不那么冗长

    "&&"表示同时都要满足

    "||"表示二者或多者只满足其中一个即可

    [同时满足三角形两边之和大于第三边且两边之差小于第三边才输出1]
    //普通方式:
    if (a+b>c&&abs(a-b)<c){
        printf("1");
    } else if (a+c>b&&abs(a-c)<b){
        printf("1");
    } else if (b+c>b&&abs(b-c)<a){
        printf("1");
    } 
    //用运算符:
    if (a+b>c&&abs(a-b)<c||a+c>b&&abs(a-c)<b||b+c>b&&abs(b-c)<a){
            printf("1");
        }
  • 后缀++优先于前缀++

    eg :x+++y 等价于 (x++)+y

  • C语言中没有 ^ 符号,也没有乘方运算符

2. 变量

1. 变量类型
  • 局部变量 {}内定义的变量

  • 全局变量 {}外定义的变量

    Tips: ①当全局变量和局部变量名字冲突时,局部变量优先

2. 换变量

eg : 让a、b的值互换

  • 法一:引入一个新变量

    t=a; a=b; b=t;
  • 法二:用两个变量进行关系式的运算 (a+b、a*b…)

    a=b+a; b=a-b; a=a-b;

    【总结】换变量时,不引入常量会更加通用

3. 常量

1. 常量类型

参考icon-default.png?t=N7T8https://blog.csdn.net/m0_62912975/article/details/123928629?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%AD%97%E9%9D%A2%E9%87%8F%E5%B8%B8%E6%95%B0c%E8%AF%AD%E8%A8%80&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-123928629.142%5Ev94%5Einsert_down28v1&spm=1018.2226.3001.4187

  • 字面量常量 固定的值 (eg:3.14、22L、33.3F…)

    • 当一个字面量想表达是unsigned时,在后面加uU

    • 如果要表示一个long型,则加 lL后缀

    • 如果要表示单精度浮点型,加fF后缀

  • const修饰的常变量

  • define 定义的标识符常量

  • 枚举常量

4. 三大循环语句

  • for循环

    • 语句括号里的三个语句不需要的可省略,但分号不可省略

    • 适用于知道变量范围或者循环次数的情况

    • 语句的功能更强

  • 辨析do-while & while循环

    • do-while循环是完成一轮循环之后在判断是否进行下一次循环

    • while循环则是每轮循环开始前先判断是否具有循环的条件

5. 数据类型

创建变量,向内存申请空间 (可参考链接)

  • 整数型: char 字符数据类型 short 短整型 int 整型 long 长整型 longlong 更长的整型

  • 浮点型: float 单精度浮点小数 double 双精度浮点小数 long double 长双精度型

    类型占位符
    char%c
    short%hd
    int%d
    long%ld
    long long%lld
    类型大小sizeof查看变量或者类型大小

6. 浮点类型

  • floatdoublelong double

    类型scanfprinft有效数字
    float%f%f,%e7
    double%lf%f,%e15
    long double%Lf%Lf看平台和编译器

    PS:%e为以科学计数法来表示 ②在%f之间加上.n可以指定输出小数点后几位,这样的输出是4舍5入的(可参考链接

  • 超过范围的浮点数

    • printf输出inf表示超过范围的浮点数

    • printf输出nan表示不存在的浮点数

7.字符类型(char)

char 称为字符类型,存储的是字符对应的 ASCII 码值

1.字符的表示
  • 用单引号来表示字符字面量 eg:'a' '1'

  • printf和scanf里用%c来输入输出字符

2.混合输入
  • scanf("%d %c",&i,&c); 中间有空格,读完整数后,会读空格后面的字符

  • scanf("%d%c",&i,&c); 中间无空格,读完整数后,若有空格会读空格(空格也是字符

3. 字符计算

ASCII码对照表

  • 一个字符加一个数字得到ASCII码表中那个数后面的字符

    char c='A';
    c++;
    printf("c=%c",c);//运行结果:c=B
  • 两个字符的减,得到它们在表中的距离

    int i='Z'-'A';
    printf("i=%d",i);//运行结果:i=25(共有26个大写字母)
  • 大小写转换

    eg:a+'a'-'A'可以把大写字母变成小写字母

    a+'A'-'a'可以把小写字母变成大写字母

8.逃逸字符(转义字符)

无法打印出来的控制字符或特殊字符,这些字符以反斜线\开头,后面接着一个字符

字符意义字符意义
\b回退一格(\b后面的字符退到前面一格)\"双引号
\t到下一个表格位\'单引号
\n换行\\反斜杠符
\r回车\f翻页符

9. 数据转换

1. 自动类型转换
  • 当运算符左右两边操作数的类型不一致时,会自动转换成表达的数的范围更大的类型(整数和浮点在一块,整数会自动换成浮点)

    • 整型:charshortintlonglong long

    • 浮点型:intfloatdoublelong double

  • 对于printf,任何小于int的类型会被转换为intfloat会被转换为double;但scanf不行

2. 强制类型转换

通常是当把一个较大的类型转换成较小的类型

  • 写法:(转换后的类型)值 eg:(int)10.2 (short)32

    PS:此时,要注意安全性(超过范围不能表示)

  • 强制类型转换的优先级高于四则运算

    double a=2.0;double b=1.0
    int i=(int)a/b;//先转换a的类型再做除法,此时i=2.0
    int i=(int)(a/b);//先做除法再转换类型,此时i=2

10. 布尔类型(bool)

  • 使用前需要加上头文件#include <stdbool.h>

  • 只有两种值(truefalse)

更多推荐