C缺陷与陷阱-符号

文章探讨了C语言中的一些赋值和运算符的使用,包括赋值表达式的贪心规则,如`(a=b=4)`的解析,以及`a++`和`++a`的差异,还有注释和空格在代码中的重要性。同时,提到了一元运算符的左值和右值问题,以及数组和指针的相关操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

红叶何时落水

#include<stdio.h>
#include<stdlib.h>

int main() {
#if 1    
    int a, b;
    a = b = 1;//合法的
    printf("(a = b = 4 ) = %d\n", (a = b = 4));
    //符号的贪心规则,尽可能的组成一个多符号
    a = b = 3;
    printf("a --- b = %d\n", a --- b);
    printf("a = %d  b = %d\n", a, b);
    a = b = 3;
    printf("a -- - b = %d\n", a -- - b);
    printf("a = %d  b = %d\n", a, b);

    a = b = 3;
    printf("a - -- b = %d\n", a - -- b);
    printf("a = %d  b = %d\n", a, b);
    // a = b = 3;
    // printf("a+++++b = %d\n", (a+++++b));//这里第一个a++返回一个右值无法再次进行++      ++a返回左值
    // printf("a = %d  b = %d\n", a, b);
    // a++返回一个临时变量;++a返回变量的引用
    // ++a = 2; 网络上查到的,说是左值,但这里报错

    a = b = 3;
    printf("a++ + ++b = %d\n", (a++ + ++b));//空格的重要性
    printf("a = %d  b = %d\n", a, b);
    int *p;
    //a = 6/*p;空格的重要性
    a = 6 / *p;
    // a = 1;
    // a =- 1;//在老版本 =- 等效 -=, 因此会出现一个问题,‘-’是不是符号位
    // printf("a = %d\n", a);

    // // a = 019;ANSI C 禁止这种写法

    // //单引号与双引号的区别
    // //单引号 代表一个整数
    // //双引号 代表一个地址 (const 字符串数组的地址)
    // printf("'a' = %d\n", 'a');
    // printf(" \"a\" = %p\n", "a");
    // a = 'abcd';//按照字节顺序,一个字节一个字节的填满a的地址
    // printf("'abcd' = %x\n", a);
#endif
#if 0
    int a = 7;
    int b = 0;
    b = -a++;//=>b = -7;a = 8; 
    printf("a = %d b = %d\n\r", a, b);
    int arr[5] = {0, 1, 2, 3, 4};
    int *p = arr;
    printf("*p++ = %d\n\r", *p++);
    printf("*p = %d\n\r", *p);

    printf("(*p)++ = %d\n\r", (*p)++);
    printf("*p = %d\n\r", *p);

    for(int i = 0; i < 5; i++)
        printf("arr[%d] = %d\n\r", i, arr[i]);

#endif    
}    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

红叶落水

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

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

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

打赏作者

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

抵扣说明:

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

余额充值