//1.编译器会从代码开始按照从上往下的顺序阅读代码
//2.c语言中标识符可以按照自己的喜好命名,但是不能下划线与数字开头,不能用编译器自带关键词,区分大小写,只能使用字母数字下划线
//3.变量是可以变的量通常需要自己定义和命名,数字是数值常量,在双引号里是字符串常量
//4.#include引入头文件stdio.h
#include <stdio.h>
//1.int整数类型定义integer的缩写
//2.自定义int类型函数名为add
//3.()里定义传递需要函数处理的参数和参数类型
//4.{}内是函数体可以在内部处理传递过来的参数
int add(int a, int b) {
//1.return是函数处理结果的返回值
//2.通过return返回a+b的计算结果
//3
return a + b;
}
//1.int整数类型定义是integer的缩写
//2.main是主函数:每个c语言代码都需要主函数调用主函数外面的自定义函数
//3.函数的()用来输入参数
//4.{}内是函数体可以在内部处理数据和操作
//5.主函数是被系统自动调用的
//6.主函数调用的自定义函数应该在主函数上面因为编译器会从上往下阅读,否则调用的函数不被编译器认识,因为没有阅读到所以不认识
int main(){
//1.int是4字节32位的整数类型定义是integer的缩写
//2.自定义空的int类型变量resulr
int resulr;
//1.char是1字节8位的整数类型
char a10;
//1.short是2字节16位的整数类型
short b10;
//1.int是4字节32位的整数类型定义是integer的缩写
//2.可以理解有符号int前面比int类型等级低的有符号shar,shor这些同类型相加后会转换为int类型,比nit等级高的long,long long 这些同类型相加则不能成为比自身等级低的int类型,比int级别高的类型都不变
//3.同一种类型有符号的类型比无符号的类型低一些,则无符号的int相加无法转换为有符号的int类型相反有符号的相加可以转换为无符号类型,比int等级低相加可以转换为int类型,比int更高的类型则不变
//4.不同有符号类型运算,两种等级低于int的不同类型相加则转换为int类型,高于int的两种不同类型相加结果转换为最高类型
//5.不同无符号类型运算,两种等级低于int的不同类型相加则转换为有符号int类型,高于int的两种无符号不同类型相加结果转换为无符号最高类型
//6.有符号与无符号类型运算,等级低于或等于int的两种类型相加会转换为int,若有比int高的类型在其中,则转换为最高类型
int c10,c11,c12;
//1.long是4字节32位的整型数据类型
long d10;
//1.long long是8字节64位的整型数据类型
long long e10;
//1.float是浮点数据类型,能够精确到6位数 取值范围是10的负37次方到10的37次方
//2.float相同的类型相加不会转换为其他类型,浮点类型同类型运算,类型保持不变
//3.不同浮点数运算:两个不同类型的符点数相加,则转换为等级高的浮点类型,float类型doudle类型等级低
//4.浮点类型比整数类型都高如果浮点类型与整数类型相加则转换为当前运算浮点类型最高的类型
//5.整数类型与整数类型运算会丢失小数点,整数类型与浮点类型运算则转换为浮点类型不会丢失小数点
float f10,f11,f12;
//1.double是双精度浮点数类型精度足够日常应用使用,但是更高的精度double也会出现误差
//2.double相同的类型相加不会转换为其他类型,浮点类型同类型运算,类型保持不变
//3.不同浮点数运算:两个不同类型的符点数相加,则转换为等级高的浮点类型,doudle类型比float类型等级高
//4.浮点类型比整数类型都高如果浮点类型与整数类型相加则转换为当前运算浮点类型最高的类型
double g10;
//1.给整型变量赋值
//2.可以在整型变量前面加()括号,在括号中写浮点数类型,则可以强制把整数类型转换为浮点类型,运算后结果为括号内的浮点数类型,这不会改变整型变量原来的类型,强制转换只是运算时,临时的转换
c11 = 5;
//1.给整型变量赋值
c12 = 2;
//1.给浮点型变量赋值
f11 = 5.5;
//1.给浮点型变量赋值
f12 = 2;
//1.将不同的变量运算后通过printf函数输出到控制台
//2.可以在整型变量前面加()括号,在括号中写浮点数类型,则可以强制把整数类型转换为浮点类型,运算后结果为括号内的浮点数类型,这不会改变整型变量原来的类型,强制转换只是运算时,临时的转换
printf("整数+浮点数=%f\n整数/浮点数=%f\n整数/整数=%d\n强制转换整数为浮点数/整数=%f\n强制转换整数为浮点数/整数=%f\n整型常量/整型常量=%d\n强制转换整型常量为浮点常量/整型常量=%f\n浮点类型常量/整型常量=%f\n\n",
c11 + f11,c11/f12,c11/c12,(float)c11/c12,(double)c11/c12,5/2,(float)5/2,5.0/2);
//定义一个变量为char类型用来等待控制台输入字符串
char h10;
//1.foat是浮点数据类型,能够精确到6位数 取值范围是10的负37次方到10的37次方
float a = 1.234567, b = 0.00001, c = 365.12345;
//1.double是双精度浮点数类型精度足够日常应用使用,但是更高的精度double也会出现误差
double a1 = 1.234567, b1 = 0.00001, c1 = 365.12345;
//1.printf是系统自带的函数可以输出到控制台, 由英文(print打印)和(format格式)的首字母组成,意为格式化打印,printf函数声明在系统自带的头文件stdio.h中被#include引用
//2.%f是浮点数据类型占位符
//3.浮点数类型的精度越高占用的字节越大
printf("浮点数a:%f\n浮点数b:%f\n浮点数c:%f\n\n双精度浮点数a1:%f\n双精度浮点数b1:%f\n双精度浮点数c1:%f\n\nsizeof测量float的字节:%d\nsizeof测量double的字节:%d\n\n", a, b, c, a1, b1, c1,sizeof(float),sizeof(double));
//1.add(2,3)调用add函数并传入整数常量2和3
//2.resulr=add(2,3)将函数返回的值通过=号赋值给变量resulr因为调用的函数返回的结果需要有东西装起来
resulr = add(2, 3);
//1.printf是系统自带的函数可以输出到控制台, 由英文(print打印)和(format格式)的首字母组成,意为格式化打印,printf函数声明在系统自带的头文件stdio.h中被#include引用
//2.输出变量resulr到控制台
//3.printf的第一个参数必须是字符串 在双引号内的是字符串常量,printf函数转换过程:(1.printf函数 2.二进制数据 3.转换规范 4.字符)
//4.%d是整型占位符\n是换行符
//5.printf可以直接打印字符串到控制台还可以通过占位符打印其他量
//6.printf双引号里的%d会代替int类型的resulr变量的值打印到控制台,打印多个可以使用多个占位符加空格,多个量之间,号隔开,右边量会依次按顺序对应左边占位符替换成量的值打印
//7.sizeof可以测量数据类型的空间大小 变量大小 常量大小
//8.通过sizeof测量不同的数据类型有不同的字节大小每个字节有八个位每个位有开关两种状态用1和0表示开为1关为0,这组成了二进制数,那么二进制就可以转化成我们可以理解的10进制数
//9.计算整型数据范围,假设不考虑负数一字节里的位数是n,数据范围为0开始到2进制的位数n次方减1就是数据范围
//10.负数在二进制中可以使用正数的补码表示,正数也可以用负数的补码表示,从左到右遇到0一直填0直到遇到1填写一个1之后全部取反
//11.不同字节的类型取值范围不同列如char只有一个字节8位二进制数,考虑负数取值公式就是【-2的7次方】到【+2的7次方-1】因为最高位是符号位所以是7次方不是8,转成十进制后取值范围就是-128到+127
//12.不同字节的类型取值范围不同列如int有4个字节,把4个字节乘每个字节的8位就是32位二进制数,考虑负数取值公式就是【-2的31次方】到【+2的31次方-1】因为最高位是符号位所以是31次方不是32,转成十进制后取值范围就是-214783648到+214783647
//13.如果不需要考虑负数需要使用unsigned去掉符号位,那么char类型的取值范围公式就是0到【+2的8次方-1】取值范围就是0到+255其他类型也是如此去掉符号位
printf("resulr的值:%d\nresulr的大小:%d个字节\n数据类型int的大小:%d个字节\n数据类型char的大小:%d个字节\n数据类型short的大小:%d个字节\n数据类型long的大小:%d个字节\n数据类型long long的大小:%d个字节\n常量123的大小:%d个字节\n",
resulr,sizeof(resulr),sizeof(int),sizeof(char),sizeof(short),sizeof(long),sizeof(long long),sizeof(123));
//1.printf输出到控制台,printf函数声明在系统自带的头文件stdio.h中被#include引用
//2.常
printf("您好世界,Hello world\n");
//1.scanf是系统自带的变参函数可以从控制台输入,scanf的第一个参数是字符串变参就是可以操作多种类型的参数,与printf输出函数相反,函数声明在系统自带的头文件stdio.h中被#include引用
//2.scanf函数转换过程:(1.scanf函数,2.键盘输入字符,3.转换规范,4.二进制)
//3.我们可以在控制台依次输入1 2 3 4 5 5.6 6.7 A 到控制台scanf函数会把输入的内容给对应的占位符转换,转后依次保存到占位符对应的变量中,然后我们可以用printf函数依次把这些变量输出到控制台
//4.使用scanf的时候占位符有空格或者其他符号那么在控制台输入的格式也要包含这些空格和符号
//5.我们把上面声明的多种类型变量使用&号依次对应左边占位符放在右边,用来保存控制台依次输入且通过占位符转换后的内容
//6.如果把输入的数值放到基本变量中就需要加&在变量名前面,如果是放在数组里则不需要在数组名前面加&
//7.需要注意占位符的类型对应相应的数据类型不同的数据类型通过不同的占位符转换为不同字节的二进制转换后放入相应字节的变量类型中保存(%hhd对应char)(%hd对应short)(%d对应int)(%ld对应long)(%lld对应long long)(%f对应float)(%lf对应double)更多类型需查看类似资料
scanf("%hhd %hd %d %ld %lld %f %lf %c", &a10, &b10, &c10, &d10, &e10, &f10, &g10,&h10);
//1.下面使用printf函数把上面通过scanf函数输入到变量中的数据打印到控制台
//2.输入输出中如果数值与占位符的取值范围不匹配超出等等则错误
//3.这里%d转换过来了字符串A的ISC码
printf("%d\n%d\n%d\n%d\n%d\n%f\n%f\n%d\n%c\n\n", a10, b10, c10, d10, e10, f10, g10,h10,h10);
//1.return是函数的返回值,返回的值对应函数的类型
//2.主函数也有返回值c语言规定主函数返回值必须是int类型
return 0;
}