C语言基础_数据类型,变量和常量,运算符,打印,宏定义

数据类型

分类

  • 基本类型
    整数类型 int,浮点数类型 float,字符类型 char,布尔类型 _Bool,枚举类型 enum
  • 指针类型
  • 构造类型
    数组类型,结构类型,联合类型
  • 空类型

占用字节

类型名称说明符字节取值范围
[signed] charint8_t / s81[-128 , 127]
unsigned charuint8_t / u81[0 , 255]
[signed] short [int]int16_t / s162[-32,768 , 32,767]
unsigned short [int]uint16_t / u162[0 , 65,535]
[signed] intint32_t / s324[-2,147,483,648 , 2,147,483,647]
unsigned intuint32_t / u324[0 , 4,294,967,295]
[signed] long [int]4
unsigned long [int]4
[signed] long long [int]int64_t8[-9,223,372,036,854,775,808 , 9,223,372,036,854,775,807]
unsigned long long [int]uint64_t8[0 , 18,446,744,073,709,551,615]
float4-3.4*10(-38) ~ 3.4*10(38)
double8-1.7*10(-308) ~ 1.7*10(308)
long double12 / 16
_Bool1

其中,整形类型占用字节与计算机有关;signed表示有符号,unsigned表示无符号。

位与字节

名称表示说明
bit最小存储或处理单位
字节byte 1byte=8bit最小寻址单位
word 1word=2byte

sizeof

计算数据类型或表达式长度的运算符,返回长度,单位为byte。

sizeof(type_name);	//sizeof(类型); eg: sizeof(int);
sizeof(object);		//sizeof(对象); eg: sizeof(i);
sizeof object;		//sizeof 对象;	eg: sizeof i;

数值数据编码

  • 原码
    符号位(最高位,0为正数,1为负数)+数据位

  • 反码
    正数:[X]反 = [X]原
    负数:[X]反 = [X]原_符号位不变,数据位各位取反

  • 补码
    原码和反码的运算规则相对复杂,计算机存储数据采用补码形式
    正数:[X]补 = [X]原
    负数:[X]补 = [X]反 + 1

  • 非数值数据编码
    ASCII标准码
    汉字编码:汉字国标码,汉字机内码等

变量与常量

变量

  • 命名
    只能由英文字母、数字和下划线组成;
    只能由英文字母或下划线开头;
    英文字母区分大小写,通常由小写字母命名变量,大写字母表示符号常量;
    避免使用关键字,C语言关键字总计 32+5+7=44 个。

  • 声明

//数据类型 变量名;
int a;
char b;
  • 关键字
autobreakcasecharconstcontinuedefaultdo
doubleelseenumexternfloatforgotoif
intlongregisterreturnshortsignedsizeofstatic
structswitchtypedefunionunsignedviodvolatilewhile
inlinerestrict_Bool_Complex_Imaginary
_Alignas_Alignof_Atomic_Static_assert_Noreturn_Thread_local_Generic

链接_C语言关键字_百度百科

常量

  • 分类
    整形常量 eg:3 const int a=1; const限定变量不允许改变,产生静态作用。
    实行常量 eg:3.14
    字符常量 eg:普通字符:‘A’ ;转义字符:’\n’
    字符串常量 eg: “Hello World”
    符号常量 宏定义 #define 标识符 常量

  • 转义字符

转义字符描述
\a响铃(BEL)
\b退格(BS),将当前位置移到前一列
\f换页(FF),将当前位置移到下一页开头
\n换行(LF),将当前位置移到下一行开头
\r回车(CR),将当前位置移到本行开头
\t水平制表(HT)
\v垂直制表(VT)
\代表一个反斜杠字符
代表一个单引号字符
"代表一个双引号字符
?代表一个问号字符
\0空字符(NUL)
\ddd八进制所代表的任意字符
\xhh十六进制所代表的任意字符

链接_转义字符_百度百科

  • \ 用于行尾,表示下一行是本行的延续。

运算符

图片来自“鱼C”
预算符的优先级和结合性_鱼C

打印

表示描述
%d有符号整型
%u无符号整型
%c字符
%s字符串
%f浮点型
%.2f精确到两位小数
%11.9f含小数点共11位,小数9位
%x打印Hex数据
%p以地址形式打印

宏定义

#define 预处理命令,只是简单地将标识符替换为定义的常量或表达式
#undef 终止宏定义

不带参数的宏定义

#define PI 3.14

带有参数的宏定义

#include <stdio.h>

#define MAX(x, y) (((x)>(y))?(x):(y))

int main(void)
{	
	printf("%d 是较大的数\n", MAX(3,5));
	
	return 0;
}

/*
运行结果
5 是较大的数
*/

#和##

预处理运算符
在带有参数的宏定义中,#后的参量将转换成字符串;
##为记号连接运算符,用于连接两个参量。

#include <stdio.h>

#define STR(s) # s
#define LINK(x, y) x ## y

int main(void)
{
	printf("%s\n", STR(Hello));
	printf(STR(Hello\n));
	printf(STR(Hello %s\n), STR(World));
	
	printf("%d\n", LINK(99, 6));
	
	return 0;
}

/*
运行结果
Hello
Hello
Hello World
996 
*/ 

可变参数

#include <stdio.h>

#define SHOWLIST(...) printf(# __VA_ARGS__)

int main(void)
{
	SHOWLIST(Hello World, 你好, PI=3.14);
	
	return 0;
}

/*
运行结果
Hello World, 你好, PI=3.14 
*/
#include <stdio.h>

#define PRINT(format, ...) printf(# format, ##__VA_ARGS__)

int main(void)
{
	PRINT(PI = %.2f\n, 3.14);
	PRINT(Hello World\n);
	
	return 0;
}
 
/*
运行结果
PI = 3.14
Hello World 
*/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

研溪南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值