C语言初阶(2)——数据类型和变量

目录

1.数据类型框架

2.数据类型长度

2.1.sizeof操作符

2.2.signed和unsigned

3.变量

3.1.变量的创建

3.2.变量的分类

4.算术操作符

4.1.双目操作符

4.2.复合赋值符

4.3.单目操作符

5.强制类型转换

6.scanf和printf

6.1.占位符

6.2.printf

6.3.scanf

6.4.赋值忽略符


1.数据类型框架

其中,布尔类型的使用要包含头文件<stdbool.h>;布尔类型变量的取值为:true或者false。

2.数据类型长度
2.1.sizeof操作符

(1)sizeof的操作数可以是类型也可以是表达式(后面的括号可省略):sizeof(类型)/sizeof 表达式;

(2)sizeof的计算结果是size_t类型的,size_t类型的返回值可能是unsigned int/unsigned long long;

(3)sizeof后面的表达式不参与真实计算,根据表达式类型得到计算结果大小;

(4)C语言中规定:sizeof(long)>sizeof(int);

2.2.signed和unsigned

(1)使用signed和unsigned修饰字符型整型;

(2)signed:一个类型带有正负号,包含负值;

(3)unsigned:该类型不带有正负号,只能表示零和正整数;

(4)如果要用int只表示非负整数,则必须使用unsigned声明变量;unsigned int中int可省略;

(5)int(默认带有正负号)==signed int;char则可能为signed/unsigned char;

3.变量
3.1.变量的创建

类型是用于创建变量的;经常变化的值就是变量,不变的值就是常量

(1)语法形式:

data_type name
    |       |
    |       |
数据类型    变量名
(整型变量、字符变量、浮点型变量)

(2)初始化:创建时给变量赋一个初始值。

3.2.变量的分类

(1)全局变量:大括号外部定义的变量;

作用范围:整个项目;

(2)局部变量:大括号内部定义的变量;

作用范围:函数内部的局部范围;

(3)当全局变量与局部变量同名时,局部优先

(4)内存中的三个区域:栈区、堆区、静态区

1>局部变量储存在栈区

2>全局变量储存在静态区

3>堆区用于动态内存管理。

4.算术操作符
4.1.双目操作符

两端有两个操作数(位于操作符两端的就是操作数)为双目操作符

(1)加法:+

(2)减法:-

(3)乘法:*

(4)除法:/

1>除号两端均为整数,执行整数除法,结果也为整数(舍弃小数部分);

2>除号两端至少有一个为浮点数,则执行浮点数除法

3>%f——float; %lf——double

(5)取模:%

返回值为两个整数相除所得的余数,结果正负号由第一个运算数的正负号决定

(6)赋值操作符:变量创建时给一个初始值叫做初始化;变量创建完再给一个值叫做赋值。

4.2.复合赋值符

+=        %=        >>=       <<=    ^=  

-=        &=         |=       *=         /=

4.3.单目操作符

(1)++:前置++:先+1后使用;后置++:先使用后+1;

(2)--:前置--:先-1后使用;后置--:先使用后-1;

(3)+:表示一个数为正数;

(4)-:表示一个数为负数;

5.强制类型转换

两边类型不同时再使用:

int a = 3.14;//a为int整型类型,而3.14为浮点数double类型,两边类型不同会报警告
int a = (int)3.14//将3.14强制转换为int类型,这种强制类型转换只取整数部分
6.scanf和printf
6.1.占位符

(1)printf()和scanf()的参数与占位符一一对应;

(2)占位符举例:

1>%c :字符

2>%d :⼗进制整数

3>%i :整数,基本等同于 %d  

4>%f :⼩数(包含 float 类型和 double 类型)

5>%hd :⼗进制 short int 类型

6>%Lf :long double 类型浮点数

7>%p :指针 

8>%s :字符串

9>%u :⽆符号整数(unsigned int)

10>%zd : size_t 类型

6.2.printf

(1)限定宽度:允许限定占位符的最小宽度;

printf("%5d\n",123);//此处%5d表示至少占5位,如果不满足则会补空格
//%5d默认为右对齐,如果希望是左对齐则为%-5d

若对于小数,则会限制所有数字的最小显示宽度:

printf("%12f\n",123.45);
//输出的浮点数最少占12位,由于小数的默认精度为小数点后6位
//故输出结果为__123.450000
printf("%2f\n",123.45);
//由于此时已经超过了2f,故会按照实际情况打印
//输出结果为123.450000

(2)总是显示正负号:printf只对负数输出负号,若要对正数输出正号,则应输出%+d

%+d可以保证输出的数值总是带有正负号;

(3)限定小数位数: 希望保留几位小数,就写成%.数字f;

printf("%6.2f\n",0.5);
//总共打印6位,小数点后为2位
//故输出结果为:__0.50

(4)最小宽度和小数位数都可以用*代替,通过printf()参数传入:

printf("*.*f\n",6,2,0.5);//等同于printf("6.2f\n",0.5);

(5)输出部分字符串:

printf("%.5s\n","hello world");//表示只输出前5个字符,即hello
6.3.scanf

(1)语法跟printf类似,但变量前必须加上&(指针变量除外),因为scanf传递的是地址;

(2)scanf处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符等;

(3)所有占位符中除%c之外都会自动忽略起首的空白字符;如果要强制跳过字符前的空白字符,可以写成scanf(" %c",&ch);

(4)%s从第一个非空白字符读起,直到空白字符(空格、换行符、制表符)为止;

#include<stdio.h>
int main()
{
    char name[11];
    scanf("%10s",name);
//name是一个长度为11的字符数组,%10s表示只读取10个字符,留一个给\0,避免数组溢出

    return 0;
}
6.4.赋值忽略符

为了避免因为采用形式不同导致解析数据出错的情况,赋值忽略符*加在任何占位符的百分号后面,解读后不会返回值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值