一周总结

关键字:void ,char ,short , int, long, float , double,signed,unsigned, const ,sizeof;

三个头文件:#include<stdio.h> #include<math.h>(sqrt开方)   #include<limits.h>;

改变数值定义;define 取代物  被取代物

数据类型:基本类型:数值型:

整型 :short(短整型) , int(整型), long(长整型);

浮点型:folat(单精度) , double(双精度);

字符型:char;

格式控制符:%hd, %d, %ld, %f , %lf, %c, %u,%c;

转义字符: \n  换行, \b  退格, \a  响铃, \t  水平制表, \v  垂直制表,\'  单引号, \"  双引号;

三角形面积运算;

#include<stdio.h>

#include<math.h>

void main()

{

int a=3,b=4, c=5;

int p= ( a + b + c) / 2;

int s=sqrt( p * ( p - a ) * (p -  b ) * ( p - c));     //sqrt (开方)

printf("%d" ,s);

getchar();

看内存:

#include<stdio.h>

void main

{

short a;

printf("%p",&a);  &取地址符

a=10;  //000a

a=12;  //000c

a= -3;  //fffd

getchar();

}

1.选择调试  窗口 内存 随意选个

2.打断点 输入地址  按F10查询地址  F5调试


求说明符最大值 最小值

#include<limits.h>        limits限制

int a = INT_MAX, b = INT_MIN;

short   a = SHORT_MAX, b = SHORT_MIN;

long a = LONG_MAX, b = LONG_MIN;

long long  a = LONG LONG_MAX, b = LONG LONG_MIN;

char a = CHAR_MAX, b =CHAR_MIN;


数据转换

数据类型的转换:
隐式转换: 
1,在参与运算时,字节数少的遇到字节数大的数据时,会自动转化成为字节数大的类型.
比如:int遇到float时会转化成float,最终结果也是float型数据.

 int a = 10;
double b = 4;   //隐式转换,等号右边转化为等号左边类型,b = 4.000000;(b=4本来为int类型转化为4.000000double类型)
double c = a / b;  //隐私转换,a先变为double类型10.000000/4.000000 = 2.50000
int d = a / c;  // 整形/整形   结果将隐式转化,得到的还是整形

2,当发生赋值操作时,等号右边的数据类型会自动转化成等号左边的主句类型.
比如:int a = 1.3,打印a时将得到1;
    unsigned short a = -1;  打印a时将得到65536;

数据转换分两种:

1.计算机存储的是补码,输出的是原码
2.小字节转大字节如: char a = 129   输出结果为-127(ASCII码表只有127个字符)
反推补码  反码(-1取反)  原码
3.求无符数据类型如: -12;
正推原码 反码(取反+1)  补码  当-12推到补码时将变成整数(整数原码反码补码都一样)


强制转换:(类型说明符)表达式
    3 / 1.5 = 2.000000(此时3发生隐式转化,变为3.000000)(3由int类型转化为float类型)
3 / (int)1.5 = 3  (1.5被强制转化成了1)
(int)(3/1.5f) = 2  (此时表达式3/1.5f的结果2.00000被强制转化成了2)

精度缺失:
    发生在大字节数据类型转化为小字节数据类型的时候
-1;
unsigned short a = -1; 
char b = a;                 
printf("%d",b);           


磨%求余

1%2  1 , 4%2   0,  3%2    3;

算数运算符:+,-,*,/,%,++,--

都是配合变量来使用,

++自增运算符   等同于 + 1;
--自减运算符   等同于 - 1;


int a = 3,b=4;
b = a+++b;  //-a++; 
计算机会将上述表达式解读为 b = (a++) + b;最终结果a = 3,b = 7;
--------------???为什么不是b = a + (++b)???-------------------------

"贪心法",当我们计算机在遇到符号时,在合法的情况下总是尽可能多的读取;



赋值运算符:  =  等号左边叫左值,右边叫右值.左值是可以修改的值,即程序中的变量.

//a = 4;   //合法
//a++ = 4; // 不合法  
//-a = -4;  //不合法 
//a + 4 = 7;  //不合法  
//(a++)++;   //不合法   
//-(a--) = -3;  //不合法


复合赋值运算符: +=,-=,*=,/=,%= 说白了就是简写

如:
int a = 3;
a += 1;  >>  a = a + 1;  >> ++a ;
a %= 7;  >> a = a%7  a = 3;
printf("%d",a);


复合赋值运算的嵌套: 自右向左结合;
如:
int a = 3;
a += a -= a *= a /= a %= a*a;

//展开后:
a = a %(a * a);  //a = 3;
a = a / a;   //a = 1;
a = a * a;   //a = 1
a = a - a;   //a = 0
a = a + a;   //a =0
printf("a = %d", a);  //a = 0



逗号运算符,与逗号表达式:
逗号表达式的值,等于最后一个逗号后面的表达式的值.
如:
a=3,a+=2,a*=3;    // a = 15 整个表达式的值 = 15
如:
int a = 0,b = 0;
b = (a = 3, a += 2, a *= 3,a %= 2);
展开:
a = 3;
a = a + 2;
a = a * 3;
a = a % 2;
b = a;
printf("a = %d,b = %d", a, b);   //a = 1 整个表达式的值 = 1



关系运算符:  
大于>,
小于<,
大于等于>=,
小于等于<=,
不等于!=,
等于==
说白了就是比较和判断
注意,注意,注意,千万不要把"=="写成"=";



在C语言中.一般情况下,逻辑上的"真"-true,在数值上等于1,"假"-false,等于0;


int a = 2, b = 3, c = 0;
c = (a < b);     //此时等号右边的关系运算表达式的结果为真,所以值为1;
printf("c = %d", c);    //c = 1;

有趣小例子:
int a = 2, b = 3,c = 4,d = 0;
d = (a < c < b);  
printf("d = %d", d);   

优先级的问题:
int a = 2, b = 3,c = 4,d = 0;
(a = b) < (c + d);
printf("a = %d", a);  //a = 3;


如果改成:
a = b < (c + d);
结果是:a = 1;


因为 "<"优先级比"="优先级要高,而"()"的优先级比"<"高.

2^32  - 1 (其实相当于10^3 = 1000 - 1 = 999);

2^32 int 2^31 - 1;最大正数是0.........(后面31个1),算下来就是2^31-1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值