C语言基本运算求解

来源:百度知道 编辑:UC知道 时间:2024/06/27 11:12:41
#include <stdio.h>
void main()
{
int i=3,j=3,k=0,m=3,n=0,l=3,a=5,b=5;
k=(j++)*(++j)+(j--)*(--j);
n=(l++)+(l++)+(l++);
printf("k=%d i*=%d m*=%d n=%d\n",k,(i++)*(++i)+(i--)*(--i),(m++)+(m++)+(m++),n);
a=(a--)+3;
printf("a=%d b=%d b*=%d b=%d\n",a,b,b=(b--)+3,b);
}

我用Turbo C2 和 VC++6.0分别输出,怎么结果不一样~~??

编译器的实现相关。
凡是出这个问题给你得人,直接给它一巴掌。
这种人永远不会成为牛人,不用给它面子。
它根本不懂编译器的实现机制。

k=18 i*=18 m*=9 n=9
a=7 b=7 b*=8 b=7

这类问题 给你一个看法吧 我没调试过,因为我没TC.以前遇到过类似的问题,就是i++,和++i (i++)++ ,这些问题研究起来是很没意义的,网上可以找到解释,说百了就是运算次序关系,我们都知道括号里面先计算,然后++i 又表示先使用后之加,那你先使用吧,但是一个运算又必须先计算括号里面的,那么最终这么一个(++i)要表示多少? 因为这个的i自加之后就会全部的i都增加一,所以计算感觉复杂,而没标准,所以这类问题不做讨论......没具体实际意义,建议放弃..呵呵的

把研究这个的时候用在学更多的地方上,没用
知道先+1后使用和先使用后+1的程序就行了