找回密码
 register

QQ登录

只需一步,快速开始

[*编程自学*] 第四课~第六课:数据类型

[复制链接]

[*编程自学*] 第四课~第六课:数据类型

[复制链接]
Waylee

主题

0

回帖

7459

积分

仙帝

积分
7459
Waylee 2024-7-30 23:45 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
33.jpg
常量与变量
1.常量:
在程序运行过程中,其值不能被改变的量(千万不能反过来说:值不能修改就是常量)
  • 整型: 100,125,-100,0
  • 实型:3.14,0.125,-3.748
  • 字符型:'a','b','2'
  • 字符串:"a","ab","1232"
使用的场合:
一般出现在表达式或者赋值语句中
例如:
a = 100 +b;//100整型常量
c = 12.5;//实型常量

2.变量:
系统根据变量的类型开辟对应的空间 其值可以被修改
变量名 代表的是 空间的内容(重要)
操作变量 就是 对空间内容的操作
变量名的命名规则:由数字、字母、下划线组成,不能以数字开头,建议:小写英文单词+“_”线构成
A:num_1  B:_num1  C:1_num (错误)  D:num
23.jpg
整型数据
1.整型常量(按进制分)
知识点 :【八进制、十进制、十六进制】
十进制:0~9
八进制:0~7
十六进制:0~9 a~f
八进制、十进制、十六进制 都是整型的输出形式

void test01()
{
        int num = 100;
        //十进制输出 %d %u %ld %lu
        printf("十进制:num = %#d\n",num);
        //八进制输出 %o 以0开头
        printf("八进制:num = %#o\n",num);
        //十六进制输出 %x 以0x开头
        printf("十六进制:num =%#x\n",num);

        //不同的进制 仅仅是数据的表现形式 不会修改数据本身
        //%x中添加为 %#x就可以显示禁止专属的前缀
}

int main(int argc,char *argv[])
{
        test01();
        return 0;
}

22.jpg

2.整型变量
有/无符号短整型(un/signed)    short(int)  2字节
有/无符号基本整型(un/signed) int               4字节
有/无符号长整形(un/signed)    long(int)   4字节
                                              (32位处理器)
#include<stdio.h>

void test02()
{
        int num1 = 0;
        unsigned int num2 = 0;
        long num3 = 0;
        unsigned long num4 = 0;
        short num5 = 0;
        unsigned short num6 = 0;
        //%d 有符号int数据输出 
        printf("num1 = %d\n",num1);

        //%u 无符号int数据输出
        printf("num2 = %u\n",num2);
        
        //%ld 有符号long数据输出
        printf("num3 = %ld\n",num3);
        
        //%lu 无符号long数据输出
        printf("num4 = %lu\n",num4);
        
        //long long 用 %lld或%llu
        
        //%hd 有符号short数据输出
        printf("num5 = %hd\n",num5);

        //%hu 无符号short数据输出
        printf("num6 = %hu\n",num6);

}
int main(int argc,char *argv[])
{
        test02();
        return 0;
}

输入和输出格式一样:
unsigned short num6 = 0;
scanf("%hu",&num6);



知识点【整型变量的操作:读(取值)、写(赋值)】
#include<stdio.h>
void test01()
{
        //局部变量不初始化 内容随机
        //int num;
        int num = 0;
        int data = 0;
        printf("num = %d\n",num);//读 取值


num = 100;//写 赋值
        printf("num = %d\n",num);

        data = num; //num读,data写
        printf("data = %d\n",data);

        //获取键盘输入
        printf("请输入一个int数据:");
        scanf("%d",&data);//&data代表是data对应空间的起始地址
        printf("data = %d\n",data);
}

int main(int argc,char *argv[])
{
        test01();
        return 0;
}

运行结果:
num = 0
num = 100
data = 100
请输入一个int数据:784055837
data = 784055837
Press any key to continue


实型数据(浮点型)
1.实型常量
实型常量也成为实数或者浮点数
十进制形式:由数字和小数点组成:0.0、0.12、5.0
指数形式:123e3代表123*10的三次方
不以f结尾的常量是double类型
以f结尾的常量(如3.14f)是flaot类型


2.实型变量
单精度(float)和双精度(double)
float型:占用4字节,7位有效数字,指数-37到38
double:占用8字节,16位有效数字,指数-307到308

代码案例:
#include<stdio.h>
void test03()
{
        //赋值语句 = 两遍的类型 尽量保证一致
        //警告内容:main.c(55) : warning C4305: 'initializing' : truncation from 'const double ' to 'float '
        float f = 3.14f;//3.14为double类型   f是flaot类型 ,存在溢出的可能,正确的应该写3.14f,确保类型相同
        
        double d = 3.14;

        //不以f结尾的 实型 为double类型
        printf("sizeof(3.14) = %d\n",sizeof(3.14));//8字节

        //以f结尾的 实型 是float类型
        printf("sizeof(3.14f) = %d\n",sizeof(3.14f));//4字节

        //%f 输出float数据
        printf("f = %f\n",f);
        
        //%lf 输出double数据
        printf("d = %lf\n",d);

        scanf("%f",&f);
        scanf("%lf",&d);
}
int main(int argc,char *argv[])
{
        test03();
        return 0;
}



数据类型
字符常量:
直接常量:用单引号括起来,如'a'、'b'等。
转义字符: 以反斜杠“\”开头,后跟一个或几个字符、如'\n','\t'等,分别代表换行、横向跳格。
#include<stdio.h>
void test04()
{
        //%c 输出的字符
        //printf("%c\n",'a');

        //字符变量
        //ch 存储的是 'a'的ASCII值
        char ch = 'a';
        printf("%c\n",ch);
        //%d 输出的字符的ASCII值
        printf("%d\n",ch);
        
        //'a'单引号 表示的取 字符的ASCII
        //'a' == 97 是完全等价
        ch = 97;
        printf("%c\n",ch);
        printf("%d\n",ch);
        
        ch = ch + 1;
        printf("%c\n",ch);
        printf("%d\n",ch);

}
int main(int argc,char *argv[])
{
        test04();
        return 0;
}

总结:
  • 'a'单引号 表示取a的ASCII值
  • 字符在计算机中储存的是ASCII
  • 'a' == 97

#include<stdio.h>

void test05()
{
        char ch = 'a';
        printf("%d\n",sizeof('a')); //4字节,取的ASCII值所以是整型
        printf("%d\n",sizeof(ch)); //1字节
        printf("%d\n",sizeof(char));//1字节
}
int main(int argc,char *argv[])
{
        test05();
        return 0;
}

获取键盘输入:
#include<stdio.h>
void test06()
{
        char ch;
        printf("请输入一个字符:");
        //scanf的%c只能提取一个字符
        //scanf("%c",&ch);
        ch = getchar(); //获取一个字符
        printf("ch = %c\n",ch);
        printf("ch = %d\n",ch);
}
int main(int argc,char *argv[])
{
        test06();
        return 0;
}

运行结果:
请输入一个字符:asd
ch = a
ch = 97
Press any key to continue

案例提高:键盘输入"abc" 只取'a'和'b'
#include<stdio.h>
void test07()
{
        char ch1,ch2;
        printf("请输入abc:");
        //提取a
        ch1 = getchar();
        getchar();//丢弃一个字符
        //提取c
        ch2 = getchar();
        printf("ch1 = %d\n",ch1);
        printf("ch2 = %d\n",ch2);
}
int main(int argc,char *argv[])
{
        test07();
        return 0;
}

输出内容:
请输入abc:abc
ch1 = 97
ch2 = 99
Press any key to continue


知识点:转义字符

#include<stdio.h>
void test08()
{
        //'\n'换行 '\t' tab
        printf("##%c##\n",'\\');//两个'\\'输出一个'\'
        printf("##%%##\n");

        printf("A:%d\n",'0');//字符'0'的ASCII是48
        printf("B:%d\n",'\0');//'\0' 是空字符,ASCII 值是 0
        printf("C:%d\n",0);//整数0
        printf("D:%d\n","0");//字符串0,实际上是字符串'0'的地址
}
int main(int argc,char *argv[])
{
        test08();
        return 0;
}


知识点:字符串常量 ""双引号作用
#include<stdio.h>
void test09()
{
        //%s 就是输出字符串
        //''取的是字符的ASCII值,""取的是字符串的首元素的地址
        //%s 从字符串的首元素 逐个字符输出 直到遇到'\0'
        printf("%s\n","hello");
        //系统会在字符串末尾自动添加一个结束字符'\0'
        printf("%d\n",sizeof("hello"));

        printf("%s\n","hello world");
        printf("%s\n","hello\0world");
        printf("##%s##\n","\0hello\0world");//第一个就是\0,所以不会显示出hello world
}
int main(int argc,char *argv[])
{
        test09();
        return 0;
}

输出内容:
88.jpg
请描述:'a'和"a"的区别?
'a'  1字节 字符   
"a" 2字节 字符串

(需要了解)
格式化输出字符:
%d 十进制有符号整数
%x 以十六进制表示的整数
%f float型浮点数
%e 指数形式的浮点数
%c 单个字符
%u 十进制无符号整数
%o 以八进制表示的整数
%lf double型浮点数
%s 字符串
%p 指针的值

特殊应用:
%3d
%03d
%-3d
%5.2f
#include<stdio.h>
void test10()
{
        printf("#########\n");
        //%5d 表示占5个终端位宽 右对齐
        printf("##%5d##\n",123);

        //%-5d 表示占5个终端位宽 左对齐
        printf("##%-5d##\n",123);
        
        //%05d 占5个终端位宽 用0补齐 右对齐
        printf("##%05d##\n",123);

        //千万不能写 %-05d
        //printf("##%-05d##\n",123);
        
        //%5.2f 5表示总位宽为5,.2表示小数位保留两位
        printf("##%5.2f##\n",3.14f);
}
int main(int argc,char *argv[])
{
        test10();
        return 0;
}

知识点:typedef 类型重定义
已有的类型重新取个别名
1、用已有的类型定义一个变量
2、用别名 替换 变量名
3、在整个表达式的前方加上 typedef
案例一:
int INT32 ;
typedef int INT32;

案例二:给int arr[5] 取个别名 ARR
typedef int ARR[5];
ARR arr;//arr就是一个拥有5个int元素的数组


楼主
Waylee 楼主

主题

0

回帖

7459

积分

仙帝

积分
7459
Waylee 2024-8-1 13:38 | 显示全部楼层
#include<stdio.h>
int main(int argc,char *argv[])
{
        //"abc" 作为类型 代表的是字符串 占空间的大小
        //"abc" 作为地址 代表的是字符串 首元素的地址
        printf("%d\n",sizeof("abc"));//4字节,abc在内存中的表示是{'a','b','c','\0'}
        return 0;
}

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2024-11-22 02:00 , Processed in 0.062732 second(s), 7 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表