关于逗号表达式、++、--、左值、右值、赋值语句

直接看代码

#include<stdio.h>
#define DISPLAY printf("a=%d  i=%d\n", a, i);
int main() {
    int i = 0;
    int a = 0;
    /*逗号表达式:每个表达式都计算,括号内取最右边的值(最后计算)
    无括号时取最左边的值(赋值语句从右到左)
    当表达式内部都是常量时没有意义,但有变量时可以改变变量的值(比如循环中多次反复)。*/
    i = 0, a++;//取左边,右边也计算。
    DISPLAY//a = 1 i = 0;
    while (i++, i < 5)//取i<10,  i++也执行
        printf("%d只眼睛%d条腿\n", 2 * i, 4 * i);
    /*++  --  问题*/
    i = 0;
    a = 0;
    i++;//i=i+1;
    a--;//a=a-1
    DISPLAY//a=-1  i=1
    ++i;//i=i+1;
    --a;//a=a-1
    DISPLAY//a=-2  i=2
    i = 0;
    a = i++;//相当于a=i; i=i+1;
    DISPLAY//a=0 i=1
    i = 0;
    a = ++i;
    DISPLAY//a=1 i=1
    i = 0;
    a = i--;//a=i; i=i-1;
    DISPLAY//a=0 i=-1
    i = 0;
    a = --i;
    DISPLAY//a=-1 i=-1
    i = 0;
    a = 0;
    ++a = i;//相当于a=a+1,  a=i;
    DISPLAY//a=0 i-0;
    /*
    a++ = i;
    错误语法!赋值语句左边需要一个左值,而非表达式;
左值(lvalue(location)可在内存寻址的(变量的标识符,即地址)
右值(rvalue(read)可读的(变量的值),不可寻址的(常量)
*/
    a = i += 1;//i=i+1 a=i;
    DISPLAY//a=1 i=1
    a = i = i + 1;//从右到左,等式三边相等。
    DISPLAY//a=2,i=2;
    i = 0;
    return 0;
}
输出如下:

输出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值