唐柏tang 发表于 2014-8-25 21:24:28

被妹子问倒了

#include "stdio.h"
void main()
{
intx=1,y,z;
y=(++x)*(++x);
    printf("%d",y);

}

为什么是9,不是6

wo940417 发表于 2014-8-25 21:24:29

本帖最后由 wo940417 于 2014-8-26 22:05 编辑

因为++x(其实就是变量 _ _X),指向的是同一个指针(地址)假设为1000:0000,那么一开始++x,那么1000:0000代表的数值就变2,然后++x,继续+1,变为3.此时这个地址代表的_ _x,进行x*x运算,算得9~~应该是这样。本人菜鸟~

x_Daniel 发表于 2014-8-25 21:29:56

第一次++x结果x为2,然后在次++x,那就是3了,3*3不就是9了, 主要是两个++x,别忘了他们都是同一个变量。

流行语 发表于 2014-8-25 21:57:00

看来你的基础得加强啊。编程的魅力之一就是可以在妹纸前炫耀一下。

破ID 发表于 2014-8-25 22:01:50

路过

x_Daniel 发表于 2014-8-25 23:08:43

三楼说的不错,哈哈~
可惜我刚毕业了,怀恋学校时光

ebloke 发表于 2014-8-26 00:15:04

x_Daniel 发表于 2014-8-25 21:29
第一次++x结果x为2,然后在次++x,那就是3了,3*3不就是9了, 主要是两个++x,别忘了他们都是同一个变量。

一楼正解

神奇的小布丁 发表于 2014-8-26 15:08:50

我又长见识了:lol:

oggplay 发表于 2014-8-26 19:33:13

这个看编译器的.

拈花小仙 发表于 2014-8-26 19:39:59

不要纠结于这些内容,我们要当程序员,不是语言专家~

仰望天上的光 发表于 2014-8-26 20:18:13

这种每个星期至少有人问一次的问题又出现了。。。真心不明白为什么遇到问题总觉得世界上自己是第一个遇到这个问题的人?为什么不baidu一下呢?

gyixue 发表于 2014-8-26 20:30:15

什么样的妹子,总是给哥哥出难题,你把她的电话给我,我骂他一顿

♂情︵☆缘★ 发表于 2014-8-26 20:58:00

本帖最后由 ♂情︵☆缘★ 于 2014-8-26 21:03 编辑

这应该得6吧

柠“萌”圆 发表于 2014-8-26 21:59:37

结果无定义
乘法操作符本身不保证是左操作数先被求值还是右边先被求值
问这个是没有意义的
具体结果还得看编译器

shahaizi 发表于 2014-8-26 22:33:11

一楼正解,不过也学到点了

被巧击的键盘丶 发表于 2014-8-27 00:55:43

我理解 ++x 是先自增再参与运算 所以两次+1之后 x == 3;3 * 3 == 9{:1_1:}

Lysanleo 发表于 2014-8-27 09:39:57

看编译器吧

HB无影 发表于 2014-8-27 12:47:59



5:      int i = 1, n;
00401028   mov         dword ptr ,1
6:
7:      n = (++i) * (++i);
0040102F   mov         eax,dword ptr //把1传给AX
00401032   add         eax,1//eax = eax +1,加一在传给Ax结果为2
00401035   mov         dword ptr ,eax
00401038   mov         ecx,dword ptr //再将2传给CX
0040103B   add         ecx,1//cx+1传给cx,结果为3
0040103E   mov         dword ptr ,ecx
00401041   mov         edx,dword ptr //再将3传给dx,dx为3
00401044   imul      edx,dword ptr //3乘3传给dx
00401048   mov         dword ptr ,edx//j结果9
8:
9:      printf ("%d\n", n);
0040104B   mov         eax,dword ptr
通过上面的反汇编可以很清楚的看到!!!


1771437751 发表于 2014-8-27 18:04:10

我又长见识了

ghuibin 发表于 2014-8-27 21:37:09

妹子漂亮吗?
页: [1] 2 3
查看完整版本: 被妹子问倒了