c语言学习Day1

跟着王道c语言督学营
视频:b站:王道训练营-c语言教程
书籍:跟着“龙哥”学C语言编程

1、Hello-world;

了解了如何建立项目,讲述了断点,以及调试窗口,

#include 
//预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
#include 

int main()
{
     
	int i = 10;
	printf("hello world\n");
		system("pause");
		//暂停运行,以便于查看运行结果,仅用于dos窗口下的暂停,vs2017及之后的版本不需要写这个
		return 0;
		//当函数存在返回值时,必须有return 0存在,viod无返回值
}

c语言学习Day1_第1张图片
编写程序时,遇到的编译错误分为链接错误和编译错误。
链接错误:双击显示错误行
编译错误:一般为函数写错了,看对应的函数符号

2、符号常量

用define定义符号常量

#include 
#include 

#define SUN 7
int main()
{
     
	int i = SUN * 2;
	printf("%d\n", SUN);
	//printf函数是显示输出函数,其中百分号后面的字符定义如下:
	//%a(%A) 浮点数、十六回进制数字答,%c 字符,%d 有符号十进制整数,%f 浮点数(包括float和doulbe)
	//,% e(%E) 浮点数指数输出,% g(%G) 浮点数不显无意义的零"0",%i 有符号十进制整数(与%d相同)
	//,% u 无符号十进制整数,%o 八进制整数,%x(%X) 十六进制整数0f(0F),% p 指针,%s 字符串至于\n表示是换行的意思。
  	return 0;
}

注意下方i的输出结果

#define SUN 7+5
int main()
{
     
	int i = SUN * 2;
	printf("%d\n", i);
	return 0;
}

结果为17
看一下预处理文件main.i中计计算机计算的过程

c语言学习Day1_第2张图片
以后记得写做``

#define SUN (7+5)

3、整型常量的不同进制表示

#include 
#include 

int main()
{
     
	int i = 0x127b;//十六进制
	int j = 0173;//八进制
	printf("%d\n",i);
	printf("%d\n",j);//%d\n十进制表示
	return 0;
}

4、补码

补码是原码取反后加1的结果

#include 
#include 
//补码,-5用补码存储,5的取反加1
int main()
{
     
	int i = -5;
	int j = 2, k;
	k = i + j;
		return 0;
}
//0000 0000 0000 0000 0000 0000 0000 0010  2
//1111 1111 1111 1111 1111 1111 1111 1011  -5
//1111 1111 1111 1111 1111 1111 1111 1101  -3
//0000 0000 0000 0000 0000 0000 0000 0011  3(取反加1)

5、 整型变量类型

#include 
#include 

int main()
{
     
	short i = 0x80fb;
	unsigned short j = 0x80fb;
	printf("i=%d\n", i);
	printf("j=%d\n", j);
	return 0;
}

输出的结果并不相同

-32517
33019

0x80fb
二进制:1000 0000 1111 1011
short的长度只有两个字节,也就是2*8=16位,最高位被当成符号位,这个二进制被当成补码,转换为原码输出,-32517
unsigned short表示无负号,或者用int、long有四个字节,最高位不为符号位,正常输出为33019

6、溢出

#include 
#include 

int main()
{
     
	short a,b;
	a = 32767;
	b = a + 1;
	printf("b=%d\n", b);
	return 0;
}
b=-32768

a=32767
二进制表示:0111 1111 1111 1111
b=a+1
二进制表示:1000 0000 0000 0000
最高位为符号位,取反+1
原码为:1000 0000 0000 0000 为-32768

7、 浮点型数据

#include 
#include 

int main()
{
     
	float f = 1.456;
	if (1.456 == f)//近似值,判断时要用减法
	{
     
		printf("f is equal to 1.456\n");
	}
	else {
     
		printf("f is not equal to 1.456\n");
	}

	return 0;
}

显示的结果为not

f is not equal to 1.456

浮点数f取得是近似值,浮点型数据的组成:符号位+指数部分+小数部分(-320.5=-3.205e2),但是计算机无法计算10的幂次,只能是近似值。

应该下方程序判断

if (1.456 -f>-0.000001&&f-1.456<0.000001)
//小于/大于多少与浮点类型的有效数值有关

你可能感兴趣的:(c语言)