C:基本数据类型、运算符和变量

1. 基本数据类型

  1. 整型(5种):字符型(char)、短整型(short)、整型(int)、长整型(long)、长长整型(long long)。
  2. 浮点型(3种):单精度型(float)、双精度型(double)、长双精度型(long double)。

1.1 获取数据类型大小

关键字sizeof:获取单位的字节数(Byte).一个字节是8位二进制,可容纳256个数字。一个ASCII字符就是一个字节。

#include 


int main()
{
    char a;
    short b;
    int c;
    long d;
    long long e;
    
    float f;
    double g;
    long double h;
    printf("char:%d\n",sizeof(a));
    printf("short:%d\n",sizeof(b));
    printf("int:%d\n",sizeof(c));
    printf("long:%d\n",sizeof(d));
    printf("long long:%d\n",sizeof(e));
    printf("float:%d\n",sizeof(f));
    printf("double:%d\n",sizeof(g));
    printf("long double:%d\n",sizeof(h));
}
1.1 结果

1.2 输入输出格式

No 数据类型 占位符
1 char %c
2 short %hd
3 int %d
4 long %ld
5 long long %lld
6 float %f
7 double %lf
8 long double %Lf
  • 注意:double输入占位符必须为%lf,输出占位符可以为%f

1.3 整型类型

1.3.1 无符号整型

  1. unsigned char - %u
  2. unsigned short - %hu
  3. unsigned int - %lu
  4. unsigned long long - %llu

1.3.2 整型类型选择

  1. 大多数情况下使用int;
  2. 如果int范围不够,使用long long;
  3. 避免使用long;
  4. 谨慎使用unsigned.

1.4 浮点类型

当浮点数超出可表示的范围,会有如下值。

No 输出 意义
1 inf 正无穷大
2 -inf 负无穷大
3 nan 不存在
#include 

int main()
{
    printf("1.0/0.0  = %f\n",1.0/0.0);
    printf("-1.0/0.0 = %f\n",-1.0/0.0);
    printf("0.0/0.0  = %f\n",0.0/0.0);
    return 0;
}
1.4 结果

1.4.1 浮点类型精度

  1. float - 6~7
  2. double - 15~16
  3. long double - 18~19

1.4.2 浮点类型选择

  1. 大多数情况下使用double;
  2. 尽量不使用float;
  3. 过程运算可以使用long double.

1.5 字符类型

1.5.1 ASCII编码

1.5.2 字符运算

  1. 一个字符加上一个数字得到ASCII表中对应新字符;
  2. 两个字符相减,得到这两个字符在表中的距离。
  • 练习
  1. 别打印出26个大写字母和小写字母。
#include 

int main()
{
    char c1 = 'a';
    char c2 = 'A';

    // 打印26个小写字母    
    for(int i=0;i<26;i++){
        printf("%c ",c1+i);
    }
    printf("\n");
    
    // 打印26个大写字母    
    for(int i=0;i<26;i++){
        printf("%c ",c2+i);
    }
    printf("\n");
}
1.5.2 1 结果

2.把一个字符串整型数字转化成整型数字。例如:"1234"转化成1234

#include 

int main()
{
    char s[32];
    scanf("%s",s);
    
    int res = 0;
    for(int i=0;'\0' != s[i];i++){
        res = res*10 + s[i] - '0';
    }
    printf("%s\n",s);
    printf("%d\n",res);
}
1.5.2 2 结果
  1. 判断一个字符串是否存在满足标识符命名规则。
    标识符分为三类:关键字、预定义标识符、用户定义标识符 。
    由字母(A-Z、a-z)、数字(0-9)、下划线(“_”)组成,并且首字符不能是数字。不能重复。所以关键字、预定义标识符不能作为用户标识符。
#include 

int main()
{
    char s[50];
    scanf("%s",s);
    // 首字符不能是数字
    if(s[0] >='0' && s[0] <='9'){
        printf("no\n");
        return 0;
    }else{
        for(int i =0;'\0' != s[i];i++){
            if('a'<=s[i] && s[i]<='z') continue;
            if('A'<=s[i] && s[i]<='Z') continue;
            if('0'<=s[i] && s[i]<='9') continue;
            if('_' == s[i]) continue;
            printf("no\n");
            break;
        }
    }
    printf("yes\n");
}
  1. 大小写转换。
#include 

int main()
{
    // 'a' = 97 'A' = 65 
    char c;
    scanf("%c",&c);
    
    if(c >= 'A' && c <= 'Z'){
        printf("%c -> %c\n",c,c+'a'-'A');
    }else if(c >= 'a' && c<= 'z'){
        printf("%c -> %c\n",c,c-'a'+'A');
    }else{
        printf("C is not a letter.\n");
    }
}
1.5.2 4 结果一

1.5.2 4 结果二

1.6 转义字符

  • 常用转义字符
字符 含义 字符 含义
\' 单引号 \" 双引号
\r 回车 \n 换行
\b 退格符 \f 翻页符
\t 表格符 \\ 反斜线符

1.7 布尔类型

bool():true,false.
头文件:#include

1.8 数据类型转换

1.8.1 自动类型转换

当运算符左右两边操作数的类型不一致时,会自动转换成较大类型。

  • 整型:charshortintlonglong long
  • 浮点型:intfloatdoublelong double

1.8.2 强制类型转换

当把一个较大的类型转换成较小的类型,需要强制转换。

  • 语法
(转换后的类型)值
(int)a
#include 

int main()
{
    printf("%d\n",(int)3.14);
    printf("%lf\n",(double)1/2);
}
1.8.2 结果
  • 浮点数转整数采用的是截断方式。3.14 -> 3.

你可能感兴趣的:(C:基本数据类型、运算符和变量)