C语言数据类型类型及语句(各种详细的细节以及基础+持续更新中

简介: C语言数据类型类型及语句(各种详细的细节以及基础+持续更新中
#include <stdio.h>
int main(){
    printf("hello,world\n");   //printf是打印输出函数
    return 0
}

1.#include <stdio.h>必须要有.

2.符号为英文.

3.语句结束后以分号结尾.

4.每一个函数只有一个main函数.

1.1关键字

1.1.1数据类型的关键字

用于定义变量或者类型

char、short、int、long、float、double、struct、void、

1.char 字符型,用char定义的变量是字符型变量,占一个字节.

char ch='a' =是赋值号

char ch1='1';  //正确  用单引号引起单个字符正确,引起多个字符错误.
char ch2='1234'  //错误

2.short 短整型,用short定义的变量是短整型变量,占2个字节.

short int a='10';

3.int 整型,用int定义的变量是整型变量,占4个字节.

int a=10;

4.long 长整型,用long定义的变量是长整型变量,占4个字节.

long int a=10;

5.float 单浮点型,用float定义的变量是单浮点型变量,占4个字节.

float a=3.6f;

5.double 双浮点型,用double定义的变量是双浮点型变量,占8个字节.

double a=3.6;

6.struct 这个关键字是用来定义结构体的.

7.void 空类型的关键字.

void不能用来定义变量,没有void类型的变量.void是用来修饰函数的参数或者返回值,代表函数没有参数或者没有返回值.

void fun(void){
}
      //代表fun函数没有返回值,fun函数没有参数.

1.1.2存储相关的关键字

register、static、const、 extern

1.register 是寄存器的意思,用register修饰的变量是寄存器变量.即在编译的时候告诉编译器这个变量是寄存器变量,尽量将其存储空间分配到寄存器中.

注意:

(1)定义的变量不一定放在寄存器中.

(2)cpu取数据的时候去寄存器中拿数据比去内存中拿数据要快.

(3)因为寄存器比较宝贵,所以不能定义寄存器数组.

(4)register 只能修饰字符型及整型的,不能修饰浮点型

(5)因为register修饰的变量可能存放在寄存器中不存放在内存中,所以不能对寄存器变量取地址,因为只有存放在内存中的地址才有地址.

register char c;      //正确
register short int c;   //正确 
register int c;          // 正确
register float c;     //错误

2.static 是静态的意思

static可以修饰全局变量,局部变量,函数

3.const 是常量的意思

用const修饰的变量是只读的,不能修改它的值.const也可以修饰指针.

4.extern是外部的意思,一般用于函数和全局变量的声明.

1.1.3其它关键字

sizeof、typedef

1.sizeof 使用来测变量,数组的占用存储空间的大小(字节数)

int a=10;
int num;
num=sizeof(a);    //a的值为4

2.typedef 重命名相关的关键字.

typedef int INT a;
INT a=100;

扩展知识:在C语言给变量和函数起名时,由字母,数字,下划线组成,必须由字母或者下划线开头.起名字的时候要见名知意.

C 语言的程序结构 一个完整的 C 语言程序,是由一个、且只能有一个 main()函数(又称主函数,必须有) 和若干个其他函数结合而成(可选) main 函数是程序的入口,即 程序从 main 函数开始执行.

1.2数据类型

1.2.1基本类型

char、short、int、long、float、double

常量

在程序运行过程中,其值不可以改变的量.

变量

其值可以改变的量被称为变量.

字符变量

用 char 定义,每个字符变量被分配一个字节的内存空间 字符值以 ASCII 码的形式存放在变量的内存单元中.

字符串常量

是由双引号括起来的字符序列,如“CHINA”、”哈哈哈” “C program”,“$12.5”等都是合法的字符串常量.

字符串常量与字符常量的不同

‘a’为字符常量,”a”为字符串常量 每个字符串的结尾,编译器会自动的添加一个结束标志位'\0', 即“a”包含两个字符‘a’和’\0’

格式化输出字符:

%d 十进制有符号整数 %u 十进制无符号整数

%x 以十六进制表示的整数 %o 以八进制表示的整数

%f float 型浮点数 %lf double 型浮点数

%e 指数形式的浮点数 %s 字符串

%c 单个字符 %p 指针的值

特殊应用:

%3d %03d %-3d %5.2f

%3d:要求宽度为 3 位,如果不足 3 位,前面空格补齐;如果足够 3 位,此语句无效

%03d:要求宽度为 3 位,如果不足 3 位,前面 0 补齐;如果足够 3 位,此语句无效

%-3d: 要求宽度为 3 位,如果不足 3 位,后面空格补齐;如果足够 3 位,此语句无效

%.2f:小数点后只保留 2 位

1.2.2构造类型

概念:由若干个相同或不同类型数据构成的集合,这种数据类型被称为构造类型

例:int a[10];

数组、结构体、共用体、枚举

1.2.3类型转换

数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题.

转换的方法有两种:

自动转换: 遵循一定的规则,由编译系统自动完成.

强制类型转换: 把表达式的运算结果强制转换成所需的数据类型

自动转换的原则: 1、 占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低.

2、 转换方向:

五种转换的情况:

(1) 当表达式中出现了 char 、short int 、int 类型中的一种或者多种,没有其他类型了 参加运算的成员全部变成 int 类型的参加运算,结果也是 int 类型的

例 8: #include<stdio.h>  
int main(int argc, char *argv[]) { 
printf("%d\n",5/2); 
return 0; }

(2) 当表达式中出现了带小数点的实数,参加运算的成员全部变成 double 类型的参加运算,结果也是 double 型。

 例 9: #include<stdio.h>  
 int main(int argc, char *argv[]) { 
 printf("%lf\n",5.0/2); 
 return 0; }

(3) 当表达式中有有符号数 也有无符号数,参加运算的成员变成无符号数参加运算结果也是无符号数.(表达式中无实数) .

例 10: #include<stdio.h>  
int main(int argc, char *argv[]) { 
int a=-8; 
unsigned int b=7; 
if(a+b>0) { 
printf("a+b>0\n"); } 
else { 
printf("a+b<=0\n"); } 
printf("%x\n",(a+b)); 
printf("%d\n",(a+b)); 
    return 0; }

(4) 在赋值语句中等号右边的类型自动转换为等号左边的类型

例 11: #include <stdio.h>  
int main(int argc, char *argv[]) { 
int a; 
float b=5.8f;         //5.8 后面加 f 代表 5.8 是 float 类型,不加的话,认为是 double 类型 a=b; 
printf("a=%d\n",a)
return 0;
}

5) 注意自动类型转换都是在运算的过程中进行临时性的转换,并不会影响自动类型转换的变量的 值和其类型

例 12: #include<stdio.h>  
int main(int argc, char *argv[]) { 
int a; 
float b=5.8f;         //5.8 后面加 f 代表 5.8 是 float 类型,不加的话,认为是 double 类型 a=b; 
printf("a=%d\n",a); 
printf("b=%f\n",b);    //b 的类型依然是 float 类型的,它的值依然是 5.8 
return 0; }

强制转换:

通过类型转换运算来实现 (类型说明符) (表达式) 功能: 把表达式的运算结果强制转换成类型说明符所表示的类型. 例如: (float)a; // 把 a 的值转换为实型 (int)(x+y); // 把 x+y 的结果值转换为整型 注意: 类型说明符必须加括号.

例 13: #include<stdio.h>  
int main(int argc, char *argv[]) { 
float x=0; 
int i=0; 
x=3.6f; 
i = x; 
i = (int)x; 
printf("x=%f,i=%d\n",x,i); 
return 0; }

说明: 无论是强制转换或是自动转换,都只是为了本次运算的需要,而对变量的数据长度进行的临时性 转换,而不改变数据定义的类型以及它的值.


相关文章
|
10月前
|
存储 程序员 编译器
C 语言中的数据类型转换:连接不同数据世界的桥梁
C语言中的数据类型转换是程序设计中不可或缺的一部分,它如同连接不同数据世界的桥梁,使得不同类型的变量之间能够互相传递和转换,确保了程序的灵活性与兼容性。通过强制类型转换或自动类型转换,C语言允许开发者在保证数据完整性的前提下,实现复杂的数据处理逻辑。
|
8月前
|
存储 人工智能 程序员
一文彻底搞清楚C语言的数据类型和变量
本文介绍了数据类型(基本、构造、指针、空类型)、变量(使用、命名规则、作用域)和常量(字面、符号、枚举、表达式),帮助初学者理解编程基础概念。坚持学习,定能创造奇迹!
1269 1
一文彻底搞清楚C语言的数据类型和变量
|
9月前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
239 1
|
10月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
473 8
|
11月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
441 2
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
229 1
|
存储 编译器 C语言
C语言:数组名作为类型、作为地址、对数组名取地址的区别
在C语言中,数组名可以作为类型、地址和取地址使用。数组名本身代表数组的首地址,作为地址时可以直接使用;作为类型时,用于声明指针或函数参数;取地址时,使用取地址符 (&),得到的是整个数组的地址,类型为指向该类型的指针。
|
C语言
3.4 C语言基本数据类型2
在C语言中,声明一个整型(int)变量时,需先写入&#39;int&#39;关键字,后跟变量名并以分号结尾。若同时声明多个变量,可在&#39;int&#39;后用逗号分隔列出所有变量名。例如,`int erns;` 或 `int hogs, cows, goats;` 都是合法声明。变量声明后需通过赋值语句如 `cows = 112;` 或使用函数如 `scanf()` 来初始化其值。
138 10
|
C语言
3.1C语言基本数据类型
在C语言中,初始化变量是指为变量设定初始值,通常在声明时直接完成,例如 `int cows=32;`。应注意避免在同一语句中混合初始化与未初始化的变量,如 `int dogs, cats=94;` 这样的写法容易引起误解。此外,整型常量如21、32等在C语言中被视为int类型,但非常大的整数则不然,且带有小数点或指数的数值不属于整型常量。
171 9
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
162 1