数据类型,运算符和表达式,c入门

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

例1-3

#include <stdio.h>
#define PRICE 30;  
//勇表示符号代表一个常量,称为符号常量 ,price就是符号常量
int main()
{
	int num,total;
	num = 10;
	total = num*PRICE;
	printf("total = %d、n",total);
}

//符号常量与变量不同。它的值在其作用域内不能改变,也不能再被赋值
//符号常量的使用好处:1.含义清楚。 2,能做到一改全改

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
int main()
{
	printf("%d\n",sizeof(int)); 
 } 

整型变量 数的范围 字节数
int 2的32次 4
unsigned int 同上 同上
short int 2的16次 2
unsigned short int 同上 同上
long int 2的32次 4
unsigned long 同上 同上

在这里插入图片描述

**

  • 整型变量的定义与使用

**

#include <stdio.h>
int main()
{
	int a,b,c,d;
	unsigned u;//无符号整型,可以存放的正数范围比有符号整型中的范围大一倍
	//整形可以看为整数
	a = 12;
	b = -24;
	u = 10;
	c = a+u;
	d = b+u;
	printf("%d+%d=%d,%d+%d=%d\n",a,u,c,b,u,d);
	 //("%d+%d=%d,%d+%d=%d\n",a,u,c,b,u,d);==("a+u=%d,b+u=%d\n", c, d);!!!!!
	 //%d以整型的形式输出
	return 0; 
}

!!!!!悟啦!!!!

  • 整型数据的溢出

#include <stdio.h>
int main()
{
	short int a,b;
	a=32767;
	b=a+1;
	printf("%d,%d\n",a,b);
}

2的16次=65536
2的15次=32768,因为包括0,所以最多到32767
32767:01111111111111111(第一个0表示正负,电脑不识得-+)
32768:1000000000000000(只有16位,1表示负数了,所以没了!!)
//用补码(储存的格式)可以计算

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

最后的24位全是指数,E后面的数,也就是10^,所以表示范围
在这里插入图片描述

ps:平时直接用double即可,因为double是最大的
在这里插入图片描述

在这里插入图片描述

因为double转换成float精度减少导致错误%f
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
另外用%d算3/22的结果为2,因为这是整型所以是3/2先约成整数1再2
因为是浮点型,所以必须加小数点

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
x=120时都是用char来表示的时候
在这里插入图片描述

在这里插入图片描述

65-90 :大写字母
97-122 :小写字母

  • 字符型数据

//字符型数据--像字符变量赋予整数 
#include <stdio.h> 
int main()
{
	char a,b;
	a=120;
	b=121;
	printf("%c.%c\n",a,b);//用字符型的格式打出 --去找aska码 
	printf("%d,%d",a,b);//以整型的格式打印 
	return 0;
 } 

//字符型数据--像字符变量赋予整数 
#include <stdio.h> 
int main()
{
	char a,b;
	a='x';
	b='y';
	printf("%c.%c\n",a,b);//用字符型的格式打出 --去找aska码 
	printf("%d,%d",a,b);//以整型的格式打印 
	return 0;
 } 

都得到此结果在这里插入图片描述

//将小写字母转换成大写字母(相差32) 
#include <stdio.h>
int main()
{
	char a,b;//定义两个字符型数据
	a='a';
	b='b';
	a=a-32;
	b=b-32;
	printf("%c,%c\n%d,%d\n",a,b,a,b);
	return 0;
}

比较cahr a=33;和int a=33;
答:有区别,打印表面无区别,但是一个是字符一个是数字,变量类型不一样。
char只是字符常量,int的范围比char要多很多
在这里插入图片描述

“ ”后边默认加了\0但是不显示,表示结尾的标志
字符常量‘内’只能写一个字母&数字;字符串常量可以写多个
因为char字符变量只占一个字节,有8位=258(2的八次),asc码一共有256
char只有8位,“a=”“a\0”有两个以上即16位以上,不能使用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3)4)都涉及到cpu的储存。
在这里插入图片描述
int = long 这样就会发生精度的损失。
在这里插入图片描述
改成double&float的时候需要把%d改成%f
因为PI是实型,r为整型,两者运算时都会转化为精度最大的double。!!这个是截取,并非四舍五入。!!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为计算机是二进制储存的,没有四舍五入
在这里插入图片描述
eg:A=B就是左加右,即右结合,-A符号在左,即左结合。-x为x加上负号,所以为左结合性。
=为右结合性,因为是将后边的值赋到前边去。从右往左执行。
除了赋值运算符外,所有二元运算符都是左结合的
左右结合性的解释
在这里插入图片描述
若%d改为%f–编译错误–整型除以整型–肯定不行
改:如果运算量中有一个是实型,则结果为双精度实型。
在这里插入图片描述
在这里插入图片描述
%求模,求余数----
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到后边循环自加自减用处很大
eg:定义:i=5;y=i++ =为右结合性,i先输出5所以y=5,然后i加一变成6。输出:i=6,y=5.
定义:i=5;y=++i, 输出:i=6,y=6
在这里插入图片描述因为根据上一轮输出i已经等于9了,所以再减一就是8.–因为它是变量,所以是随着编译过程随时变化的。
在这里插入图片描述
首先回答 q = (++j)+(++j); 为什么是14
因为会先执行两个括号里面的自增,得到 j==7
所以结果为14

然后来看 q = (++j)+(++j)+(++j); 为什么是22
因为编译器会自作聪明的进行“优化”
先将某两个进行结合 q = (++j)+ ((++j)+(++j));
完成两个里面的计算得到 j = 7,q = (++j) + 14;
所以结果为22

最后,强烈不推荐这样写代码,一是不同编译器可能会输出不同结果,二是代码可读性极差
-------主要是编译器不同输出结果不一样,看软件。
在这里插入图片描述
=:将表达式的值赋给变量。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
该处逗号运算符的作用:求出a+b以及b+c的值,将其浓缩为一个语句。
=优先于逗号,这里y=(x=a+b)=6,如果题目是y=(x=a+b,b+c),这时候y=b+c=10
在这里插入图片描述
这里y=表达式1,因为“=”的优先级要高于“,”要让结果为表达式4的话需要在表达式前加中括号
因为逗号优先级最低 先把括号中的值算出来 最后就是右边的值复制给y 因为等号是右结合 所以取最右边一个表达式得出来的值给y
有括号最后一个,无括号第一个,自己试几遍就知道了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值