【零基础学C语言】(3) C语言数据类型和变量

一 数据类型

内置类型

1.整型类型(整数):

(1、2、3、4.......)

short int=short(短整型)、int(整型)、long int=long(长整型)、long long int=long long(更长整型)

2.浮点型类型(小数):

(0.2、1.2、1.0 .....)

float(单精度)、double(双精度)、long double(精度更长)

float weight = 30.1;//默认double类型
float weight = 30.1f;//加f变为float类型
3.字符型:

('a'、'A')

char

4.布尔类型:

(变量的取值:true(1)或false(0) )

bool(_Bool)

5.数据类型长度

(1字节=8bit)

可用printf("%zd",sizeo(数据类型));计算数据类型长度(字节)

char = 1

bool = 1

short = 2

int = 4

long = 4

long long = 8

float = 4

double = 8

long double = 8

sizeof操作符

可以用于计算操作符数的类型长度,单位是字节。

使用:

1 sizeof (类型)
2 sizeof 表达式

sizeof的返回值打印需要用到%zd打印

自定义类型(后续介绍)

数组

结构体 struct

枚举 enum

联合体 union

二 signed和unsigned

1.signed:有符号的

温度、海拔

2.unsigned:无符号的

身高、体重

:(1)int、short默认带正负符号

       (2)使用unsigned可使同样长度的内存的最大值增大一倍如short int(signed short                         int)的取值范围:-32768~32768,unsigned short int的取值范围:0~65536

三 变量

1.创建变量:

数据类型+变量名

int a;
float b;
char ch;
......
2.变量的分类:

(1)全局变量:大括号外面

int a = 100;

int main()

{

    int b = 10;

    return 0;

}

可在整个工程里使用

(2)局部变量:大括号里面

int a = 100;

int main()

{

    int b = 10;

    return 0;

}

只能在自己所在的局部范围内使用

注:当全局与局部重名时--->局部优先(尽量避免)

3.变量储存位置:

内存的三个区域:栈区、堆区、静态区

栈区:局部变量,函数参数

堆区:动态内存管理malloc、calloc、realloc、free

静态区:全局变量,静态变量

四 算数运算符

算数操作符(双目操作符)

(1)+  加法

(2)-  减法

(3)*  乘法

(4)/  除法

注意 “ / ”两端都为整数,结果为整数如6/4=1(整除后的商)

          两端有小数,结果为小数 6.0/4=1.5

(5)%  取余(只能用于整数运算)

获得整除后的余数

负数求模结果取决于第一个运算数的正负号决定

五 赋值

1.操作符 “=”

int a = 0;初始化

a = 10;赋值

2.连续赋值

从右到左

3.复合赋值

+=、-=、*=、/=、%=

a = a+3 等于a += 3

六 单目操作符:

++:

自增1:a++ 等于 a++ 等于 a=a+1 等于 a+=1

前置(++a):先加1 后使用

后置(a++):先使用 后加1

--:

自减1:与++相反且同理

+(正)

int a= +5

printf("%d",a) //5

-(负)

int a = -5

int b = -a

printf("%d",a) // -5

printf("%d",b) // 5

七 强制类型转换

在括号里加希望转化的类型:“(类型)

例:

int a =(int)3.14;
//a为整形,3.14为double类型,加(int)强制转换使a = 3

八 scanf、printf

printf

将数据输出到屏幕上

基本用法: printf("   ");

例:

printf("hello world");———>hello world

可搭配

例:

printf("hello\nworld\n");  ———>  hello

 //换行                                           world

占位符

这个位置可用其他值代入

例:

常用占位符

· %d:十进值整数(有符号的10进制整数)

· %数字d:规定了输出整数所占列数,且右对齐,其余列为空格

· %0数字d:在输出所占数列中左侧必须顶满,整数位数不够时左侧补0

· %-数字d:左对齐,其余空格

· %ld:输出长整型

· %lld:输出双长整型

· %hd:十进制short int类型

· %hu:unsigned short 类型

· %lu:unsigned long int类型

· %f:浮点型

· %c:字符

· %s:字符串

输入文本可使用多个占位符

例:printf("%f%d%c",a,b,c);

scanf

可给变量中输入值

基本用法scanf("%d%d",&a,&b);//&取地址符,不能忘!!!

(输入时需用空格隔开“1 2 33 4”)

注意:数组名属于地址,不用加“ & ”

int main()
{
char arr[5];//数组
scanf("%s",arr);//数组名是地址
return 0;
}

scanf返回值

scanf()的返回值是一个整数,表示成功读取的变量个数

注意:若没有读取任何项,或匹配失败,则返回0。

占位符

与printf()占位符基本一致

%c:字符

%d:int

%f:float

%lf:double

%Lf:long double

%s:字符串

scanf在读取%s类型时,自动在结尾放入\0

%[ ]:在方括号中指定一组匹配的字符(比如 %[0-9]),遇到不在集合之中的字符,匹配格会停止。

上面所有占位符之中,除了%c以外,都会自动忽略起首的空白字符。%c不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格,

如:用%d读取“    1”,会读取“1”

       用%c读取“    1”,会读取“  ”(空格)

所以%s在读取字符数组时会在遇到空格时,会停止读取

改进:使"%[^\n]s",意思是遇到回车才停止读取

赋值忽略符

%*:该占位符不会返回值,解析后被丢弃

用法:%*c %*d等

scanf不安全报错:

解决1:vs编译环境需用scanf_s代替scanf(不建议

解决2:在.c文件的第一行加入#define _CRT_SECURE_NO_WARNINGS 1
例:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值