我的笔记--C语言一-数据类型

标识符

  • 只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线;
  • C 语言中的标识符区分大小写;
  • 自定义的标识符不能与关键字同名;

常量

字符常量

  • 字符常量中只能包括一个字符,不是字符串。例如:'A'是正确的,但是用'AB'来表示字符常量就是错误的。
  • 字符常量区分大小写。例如:'A'字符和'a'字符是不一样的,这两个字符代表着不同的字符常量
  • 表示字符时一定加上单直撇  ' '

实例:使用putchar函数将单个字符常量进行输出

#include <stdio.h>

int main()
{
	putchar('H');
	putchar('e');
	putchar('l');
	putchar('l');
	putchar('o');
	putchar('\n');//反斜杠换行,用单直撇
}

运行结果

字符串常量

“Have a good day!”和“beautiful day”即为字符串常量
C语言中存储字符串常量时,系统会在字符串的末尾自动加一个“\0”作为字符串的结束标志

字符常量和字符串常量的区别

定界符不同,字符常量使用单直撇 ' ',字符串常量使用的是双引号 " "
长度不同,字符长度为1,字符串长度要包括系统自动加上的/0,比如"H"长度就是2
 
符号常量
 

宏定义  #define

#define 也是 C 语言预处理命令的一种,被称为宏定义指令 。所谓宏定义,就是用一个标识符来表示一个字符
串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串
每行 #define 都由 3 部分组成
分类:
#define 宏名 宏值
#define MAX 10
#define PI 3.1415926
 
#define 宏名(参数列表) 宏值
#define S(r) PI*r*r
 
使用宏定义的优点:
 
1. 给数值赋予一定含义,增强代码可读性
2. 减少代码编写量
3. 可以 一改全改
实例:
  • 使用宏定义 PI 来定义 3.1415926,计算圆的面积
#include<stdio.h>
#define PI 3.1415926
int main()
{
	float r,area;
	printf("请输入圆的半径:");
	scanf("%f",&r);
	area = PI * r * r;
	printf("圆的面积为:%f\n",area);
	return 0;
}
  • 租船每小时 30 元,押金 100 元。输入租船时间,计算出租船费用。 租船费用=时间*每小时钱数+押金
#include <stdio.h>
#define YAJIN 100
#define PERHOUR 30
int main()
{
	int h,m;
	printf("请输入租船时间:");
	scanf("%d",&h);
	m = YAJIN + PERHOUR * h;
	printf("租船费用为:%d\n",m);
	return 0;
}
  • 输入程序,对比以下两个宏定义的不同,思考产生不同结果的原因
#include <stdio.h>
#define FUN1(a,b) a * b
#define FUN2(a,b) (a) * (b)
int main()
{
	int a = 2;
	int b = 3;
	printf("%d\n",FUN1(a+b,b+a));
	printf("%d\n",FUN2((a+b),(b+a)));
}
答案:
FUN1 的宏替换会变成: a+b*b+a            结果为13
FUN2 的宏替换会变成: (a+b)*(b+a)       结果为25
 

常变量

变量值不可改变的量,使用 const 修饰
例如:
const int a = 10;// 定义一个常变量
a = 9; // 报错, a const 修饰不可改变
const 修饰后的变量会变成只读,因此无法再次赋值
宏定义常量是在预处理阶段,使用宏名来代替宏值。而常变量是在程序运行时,程序在内存分配的一个变量, 只不过变量不允许再次赋值

变量

类 型 名 称

关  键  字

占用内存

有符号基本整型

[signed] int

4KB

无符号基本整型

unsigned [int]

4KB

有符号短整型

[signed] short [int]

2KB

无符号短整型

unsigned short [int]

2KB

有符号长整型

[signed] long [int]

4KB

无符号长整型

unsigned long [int]

4KB

单精度类型

float

4KB

双精度类型

double

8KB

长双精度类型

long double

8KB

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AUTO变量
auto关键字就是修饰一个局部变量为自动的,这意味着每次执行到定义该变量 的时候,都会产生一个新的变量,并且对其重新进行初始化。
#include<stdio.h>
void AddOne()
{
	auto int iInt=1;				/*定义整型变量*/
	iInt=iInt+1;					/*变量加1*/
	printf("%d\n",iInt);			/*显示结果*/
}
int main()
{
	printf("第一次调用:");			/*显示结果*/
	AddOne();				/*调用Show函数*/
	printf("第二次调用:");			/*显示结果*/
	AddOne();				/*调用Show函数*/
	return 0;			/*程序结束*/
}

关键字auto是可以省略的,局部变量的存储方式默认是自动的。
 
static变量
对于局部变量来说,static变量是和auto变量相对而言的。在语句块执行期间,static变量将始终保持语句块上一次执行时的值
#include<stdio.h>
void AddOne()
{
 static int iInt=1;				/*定义整型变量*/
	iInt=iInt+1;					/*变量加1*/
	printf("%d\n",iInt);			/*显示结果*/
}
int main()
{
	printf("第一次调用:");			/*显示结果*/
	AddOne();				/*调用Show函数*/
	printf("第二次调用:");			/*显示结果*/
	AddOne();				/*调用Show函数*/
	return 0;			/*程序结束*/
}

用static关键字

#include <stdio.h>

void AddOne()
{
	static int m = 3;
	m = m * 3;
	printf("%d\n",m);
}
int main()
{
	printf("m的平方为:");
	AddOne();
	printf("m的立方为:");
	AddOne();
	return 0;
}

混合运算

不同类型之间可以进行混合运算,例如10+'a'-1.5+3.2*6

实例:
将int型变量、char类型变量和float型变量进行相加,将结果存放在double类型的result变量中
#include <stdio.h>

int main()
{
	int iInt = 1;
	char cChar = 'A';  //ASCII码为65
	float fFloat = 2.2f; //定义单精度变量
	double result = iInt + cChar +fFloat;
	printf("%f\n",result);
	printf("%.2f\n",result);
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是连阿连

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

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

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

打赏作者

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

抵扣说明:

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

余额充值