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

1. 基本数据类型

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

1.1 获取数据类型大小

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

#include <stdio.h>


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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 <stdbool.h>

1.8 数据类型转换

1.8.1 自动类型转换

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

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

1.8.2 强制类型转换

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

  • 语法
(转换后的类型)值
(int)a
#include <stdio.h>

int main()
{
    printf("%d\n",(int)3.14);
    printf("%lf\n",(double)1/2);
}
1.8.2 结果
  • 浮点数转整数采用的是截断方式。3.14 -> 3.
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容