H2SbF7
发表于 2021-10-18 14:48:42
{:5_90:}
wh501811737
发表于 2021-10-18 14:58:13
1
鱼C-小师妹
发表于 2021-10-18 15:05:31
jhq999 发表于 2021-10-18 10:38
1、)6,4,6
2、)//
3、)
很不错咯~~
hrpzcf
发表于 2021-10-18 15:06:04
人造人 发表于 2021-10-18 13:43
因为 ++ 和 * 的优先权一样。
++ 优先级高于 *
我觉得所有的误会都源于书上的这句话{:10_250:}
新手入场
发表于 2021-10-18 15:09:49
1
鱼C-小师妹
发表于 2021-10-18 15:19:40
hrpzcf 发表于 2021-10-18 15:06
我觉得所有的误会都源于书上的这句话
哈哈哈,尽管很强了,但还是有提升空间
jhq999
发表于 2021-10-18 15:20:26
本帖最后由 jhq999 于 2021-10-18 15:22 编辑
鱼C-小师妹 发表于 2021-10-18 15:05
很不错咯~~
1、)其实就是压栈先进后出,当时我忘了,看答案才想起来
2、)我以为注释搞乱代码就没注意返回值,不仔细
ee_vincent
发表于 2021-10-18 15:38:14
看看答案
人造人
发表于 2021-10-18 15:41:21
hrpzcf 发表于 2021-10-18 15:06
我觉得所有的误会都源于书上的这句话
我没有看懂你的理解,我说一下我的理解吧
total += *start++;
翻译成下面这样
int *temp = start;
start += 1;
total += *temp;
#include <stdio.h>
int main(void) {
int array[] = {1, 2, 3};
int *start = array;
int total = 0;
total += *start++;
return 0;
}
main:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
subq $64, %rsp
.seh_stackalloc 64
.seh_endprologue
call __main
# int array[] = {1, 2, 3};
movl $1, -24(%rbp)
movl $2, -20(%rbp)
movl $3, -16(%rbp)
# int *start = array;
leaq -24(%rbp), %rax
movq %rax, -8(%rbp)
# int total = 0;
movl $0, -12(%rbp)
# total += *start++;
movq -8(%rbp), %rax
leaq 4(%rax), %rdx
movq %rdx, -8(%rbp)
movl (%rax), %eax
addl %eax, -12(%rbp)
# return 0;
movl $0, %eax
addq $64, %rsp
popq %rbp
ret
.seh_endproc
人造人
发表于 2021-10-18 16:00:53
hrpzcf 发表于 2021-10-18 15:06
我觉得所有的误会都源于书上的这句话
看一下 C++ 中的后 ++,会更明显
number_t operator++(int) {
number_t temp = *this;
++*this;
return temp;
}
#include <iostream>
class number_t {
public:
number_t(int number = 0): number(number) {}
number_t &operator++() {
++this->number;
return *this;
}
number_t operator++(int) {
number_t temp = *this;
++*this;
return temp;
}
number_t operator+(const number_t &rhs) {
return number_t(this->number + rhs.number);
}
friend std::ostream &operator<<(std::ostream &os, const number_t &rhs);
private:
int number;
};
std::ostream &operator<<(std::ostream &os, const number_t &rhs) {
os << rhs.number;
return os;
}
int main() {
number_t a(1);
number_t b(2);
number_t c = a + b++;
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
++a = 123;
std::cout << a << std::endl;
int x = 0;
++x = 1234;
std::cout << x << std::endl;
return 0;
}
psgmeiss
发表于 2021-10-18 16:31:20
加油
木鱼大大
发表于 2021-10-18 16:32:53
-9
心驰神往
发表于 2021-10-18 16:49:45
{:5_102:}
不过黄粱一梦
发表于 2021-10-18 16:52:43
可以
quark
发表于 2021-10-18 19:24:40
来看看。。。。。
路亽曱
发表于 2021-10-18 20:40:04
chart是啥
xuxiaohan
发表于 2021-10-18 21:07:49
666
dabo
发表于 2021-10-18 21:38:03
_(:з」∠)_
英俊男孩建坤
发表于 2021-10-18 21:38:09
{:10_256:}
fan03130
发表于 2021-10-18 21:38:18
1