C语言程序基础

来源:百度知道 编辑:UC知道 时间:2024/05/28 04:35:09
我有2个题看不懂 请各位大侠帮帮我解释一下
1.若i=3时,则:(i++)+(i++)+(i++)=9相当于3+3+3=9
(++i)+(++i)+(++i)=18 相当于6+6+6=18
2.main( )
{
int a =100;
printf("a++=%d/n",a++);
printf("++a=%d/n",++a);
printf("a--=%d/n",a--);
printf("--a=%d/n",--a);
}
输出结果:
a++=100
++a=102
a--=102
--a=100

这位朋友,首先,你要先 清楚 了解到 递增运算符的 用法

首先: ++ 递增运算符

当 用 i++ 时,表 示 i 在 使 用 后 再 加 1 .
在 (i++)+(i++)+(i++) 中 ()的 运 算 符 的 优 先 级 ,高于 ++ 运 算 符,++ 运 算 符 又 高 于 + 运 算 符 。9 ;按 照 前 面 说 的 , i + + 表 示,在 I 使 用 后 + 1 , 所 以 也 就 是 说 , 先 执 行 ( i ) + ( i ) + ( i ) = 3 + 3 + 3 = 9 , 再 执 行 + + 操 作 , 也 就 是 i = 4 i = 5 i = 6
同 理 , + + i 表 示 在 i 使 用 前 + 1 , 按 照 前 面 说 的 , 先 执 行 括 号 内 的 , 也 是 ( i ) + ( i ) + ( i ) , 此 时 , i 在 使 用 前 就 要 加 1 , 所 以 是 6 + 6 + 6 . 当 同 一 运 算 符 + + 进 行 运 算 时 , 按 右 结 合 运 算 , 就 是 右 边 开 始 算 到 左 边 , 而 括 号 运 算 符 是 做 结 合 的 , 左 边 算 到 右 边 。

前面所说的 在使用后加1,意思是说,在整条语句执行结束后加1,也就是,执行完 该行 “;”号前的全部语句,才+1;

1.i++是在此句运行完后把i+1
++i是在运行前就+1
2.
(1)a++先输出a(100),a再+1(101)
(2)a先+1(102),再输出a(102)
(3)a--先输出a(102),a再-1(101)
(2)a先-1(100),再输出a(100)

第一个,先计算i+i+i,然后i才自动+1,后面正好相反。
第二个,这样的弱智题目,你就记住符号在前面的先计算,然后用计算出来的参加其他的运算,符号在后面的你就不要管了直接拿给你的值算就行了。

被编译器优化了...10年前就有人问过的问题...

你先要了解递增运算符的用法.
++为递增运算符