C语言 初阶

  1. int arr[10];数组名是int [10]------>可以用sizeof(int [10])计算数组字节长度

  2. 将两个数交换值,不用第三个数

    //	//1. 加减法
    //	//缺点:数字过大会溢出
    //	/*int a = 10, b = 20;
    //	a = a + b;
    //	b = a - b;
    //	a = a - b;
    //	printf("%d %d", a, b);*/
    //
    //	//2. 异或法
    //	/*int a = 10, b = 20;
    //	a = a ^ b;
    //	b = a ^ b;
    //	a = a ^ b;
    //	printf("%d %d", a, b);*/
    
  3. sizeof是一个操作符,不是一个函数,因为他可以计算长度不带(),比如计算数据时,计算类型不可以去()

  4. sizeof()中的表达式不参与运算,如sizeof(s=a+10),s还是原来的值,没有进行运算

  5. ~按位取反,包括符号位全部取反

  6. 数组传参,传的是数组的首地址,但是本质其实是指针

    void test1(int arr[])----变成了指针,指针大小不论类型4/8
    {
        printf("%d",sizeof(arr));----->4/8
    }
    void test2(char ch[])
    {
        printf("%d",sizeof(ch));------>4/8
    }
    int arr[10]={0};
    char ch[10]={0};
    test1(arr);
    test2(ch);
    
  7. &&左边为假,右边不要算了;||左边为真,右边不要算了

  8. int arr[5]={1,2,3,4,5};

    printf(“%d\n”,arr[4]);---->[]就是下标引用操作符,[]的操作数是2个:arr,4

  9. int ret=Add(a,b);------>():函数调用操作符

  10. 隐式类型转换

    1. C的整型算术运算总是至少以缺省整型类型的精度来进行的。 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。
    2. 再执行运算。运算完成之后,结果将被 截断 ,然后再存储
    3. 整型提升,若果是无符号位,高位补0;有符号位,高位补现在最高位数字
//整型提升理解1
char a=3;
char b=127;
char c=a+b;
printf("%d",c);
/*
1. a:  	   00000000000000000000000000000011
2. b:      00000000000000000000000001111111
3. a+b:    00000000000000000000000010000010
4. 截断:    10000010
5. 由于打印的为%d是整型,所以还要发生整型提升:(因为a+b是有符号数,整型提升高位补充符号位)
			11111111111111111111111110000010
6. 补码转换为反码(-1): 11111111111111111111111110000001
7. 反码变原码: 10000000000000000000000001111110
8. 即c=-126
a和b的值被提升为普通整型,然后再执行加法运算。
加法运算完成之后,结果将被 截断 ,然后再存储于a中
*/
//整型提升理解2
int main()
{
 char a = 0xb6;
 short b = 0xb600;
 int c = 0xb6000000;
 if(a==0xb6)
 printf("a");
 if(b==0xb600)
 printf("b");
 if(c==0xb6000000)
 printf("c");
 return 0;
}
/*
a,b要进行整形提升,但是c不需要整形提升 a,b整形提升之后,变成了负数,所以表达式
a==0xb6 , b==0xb600 的结果是假,但是c不发生整形提升,则表达式 c==0xb6000000 的结果是真
*/
  1. ~取反运算符取反(包括符号位),若原码为正数,正反补都相等;若为负数,符号位不变,其他位取反

  2. 算术转换

    如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类 型,否则操作就无法进行。下面的层次体系称为寻常算术转换

//向上转换
long double
double
float
unsigned long int
long int
unsigned int
int

如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运 算。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello Flame

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值