加载中...

【c语言基础】数据结构

变量与常量

常量:数据在程序运行之前就设定好了,在整个程序之中,没有发生变化的量
变量:在程序运行之中,被赋予新值的量

数据类型和关键字

在C语言中,用int关键字来表示基本的整数类型。后3个关键字(long、short和unsigned)和C90新增的signed用于提供基本整数类型的变式,例如unsigned short int和long long int。char关键字用于指定字母和其他字符(如,#、$、%和*)。另外,char类型也可以表示较小的整数。float、double和long double表示带小数点的数。_Bool类型表示布尔值(true或false),_complex和_Imaginary分别表示复数和虚数。

位:计算机最小的存储单元,可以存储0或1.
字节:计算机中常用的存储单位,一个字节占8个位

整数

在c语言中,整数均是以补码的形式存储。正整数的补码与原码相同,而负数的补码将其整数的所有二级制位取反再加一。

原码:原码是计算机二进制表示数的一种方式,最高位0表示正数,最高位1表示负数
补码:正整数的补码是其二进制表示,与原码相同;求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1
反码:原码取反

-1在计算机中的存储:1的原码(0000 0001)->取反(1111 1110)->加1(1111 1111)

浮点数

在一个值后面加上一个小数点,该值就成为一个浮点值。

C语言的基本数据类型

int类型是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。一般而言,储存一个int要占用一个机器字长。声明为变量创建和标记存储空间,并为其指定初始值。显示八进制和十六进制,不同的进制要使用不同的转换说明。以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x。

short int类型(或者简写为short)占用的存储空间可能比int类型少,常用于较小数值的场合以节省空间。与int类似,short是有符号类型。

long int或long占用的存储空间可能比int多,适用于较大数值的场合。与int类似,long是有符号类型。

long long int或long long(C99标准加入)占用的储存空间可能比long多,适用于更大数值的场合。该类型至少占64位。与int类似,long long是有符号类型。

无符号整型:无符号整型只能用于表示零和正整数,因此无符号整型可表示的正整数比有符号整型的大。在整型类型前加上关键字unsigned表明该类型是无符号整型:unsignedint、unsigned long、unsigned short。单独的unsigned相当于unsignedint。

char类型用于储存字符(如,字母或标点符号),但是从技术层面看,char是整数类型。因为char类型实际上储存的是整数而不是字符。计算机使用数字编码来处理字符,即用特定的整数表示特定的字符。

C语言中的浮点类型有float、double和long double类型。

C语言有3种复数类型:float_Complex、double_Complex和long double _Complex

C语言的3种虚数类型是float_Imaginary、double _Imaginary和long double _Imaginary

布尔类型:布尔值表示true和false。C语言用1表示true,0表示false。_Bool ——布尔类型的关键字。布尔类型是无符号 int类型,所占用的空间只要能储存0或1即可。

常见转义字符如下表所示:

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\’ 单引号 039
" 双引号 034
\ 反斜杠 092
\v 垂直制表符
\0oo 八进制
\xhh 十六进制
#define _CRT_SECURE_NO_WARNINGS //注意在vs高版本中不识别scanf函数,需要加上这句话忽略警告
/* charcode.c-显示字符的代码编号 */
#include <stdlib.h>
#include<stdio.h>
int main(void)
{
	char ch;
	printf("Please enter a character.\n");
	scanf("%c", &ch);/* 用户输入字符 */
	printf("The code for %c is %d.\n", ch, ch);
	system("pause");  // 防止运行后自动退出,需头文件stdlib.h
	return 0;
}
//Please enter a character.
//sadsadf
//The code for s is 115.
#define _CRT_SECURE_NO_WARNINGS 
//* typesize.c -- 打印类型大小 */
#include <stdlib.h>
#include<stdio.h>
int main(void)
{
	/* C99为类型大小提供%zd转换说明 */
	printf("Type int has a size of %zd bytes.\n", sizeof(int));
	printf("Type char has a size of %zd bytes.\n", sizeof(char));
	printf("Type long has a size of %zd bytes.\n", sizeof(long));
	printf("Type long long has a size of %zd bytes.\n",
		sizeof(long long));
	printf("Type double has a size of %zd bytes.\n",
		sizeof(double));
	printf("Type long double has a size of %zd bytes.\n",
		sizeof(long double));
        system("pause");  // 防止运行后自动退出,需头文件stdlib.h
	return 0;
}
//Type int has a size of 4 bytes.
//Type char has a size of 1 bytes.
//Type long has a size of 4 bytes.
//Type long long has a size of 8 bytes.
//Type double has a size of 8 bytes.
//Type long double has a size of 8 bytes.

sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小。

#define _CRT_SECURE_NO_WARNINGS 
/* escape.c -- 使用转移序列 */
#include <stdlib.h>
#include<stdio.h>
int main(void)
{
	float salary;
	printf("\aEnter your desired monthly salary:");/* 1 */
	printf(" $_______\b\b\b\b\b\b\b");/* 2 */
	scanf("%f", &salary);
	printf("\n\t$%.2f a month is $%.2f a year.", salary,salary * 12.0);/* 3 */
	printf("\rGee!\n");/* 4 */
        system("pause");
	return 0;
}

参考书目:《c primer plus》

posted @ 2022-07-25 23:35  不会编程的小学鸡  阅读(454)  评论(0编辑  收藏  举报