【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》