鱼C论坛

 找回密码
 立即注册
查看: 2477|回复: 7

[已解决]新人求助运算符

[复制链接]
发表于 2022-10-26 09:18:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
5.设有语句int a=4;则执行了语句a+=a-=a*a后,变量a的值是()
A)-24      B)0       C)4        D)16 

想知道用c语言的代码怎么写以及他计算的逻辑谢谢!
你能帮帮我吗?
最佳答案
2022-11-4 20:18:45
本帖最后由 高山 于 2022-11-4 20:20 编辑
#include<iostream>
using namespace std;
int main(){
        int n=4;
        n+=n-=n*n;
        cout<<n<<endl;
        return 0;
} 
实际运行效果:
黑灰.png
答案是-24
能不能设置最佳答案?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-26 09:42:34 | 显示全部楼层
答案是-24
#include<stdio.h>
int main(){
        int a=4;
        a+=a-=a*a;
        printf("%d",a);
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-26 09:45:54 | 显示全部楼层
补充一下a-=a*a;的值为-12,a+=a即为-12+-12=-24
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-26 10:33:36 | 显示全部楼层
unsequenced modification and access to 'a'

这个是什么意思呢?
意思就是说,标准没有说这个表达式的值是什么,编译器的作者就随便整吧
就是这样

我这边的这个编译器是这样整的,你那边的编译器有可能不是这样整的
int main(void) {
    1139:       55                      pushq  %rbp
    113a:       48 89 e5                movq   %rsp,%rbp
    113d:       48 83 ec 10             subq   $0x10,%rsp
    int a = 4;
    1141:       c7 45 fc 04 00 00 00    movl   $0x4,-0x4(%rbp)
    a += a -= a * a;
    1148:       8b 45 fc                movl   -0x4(%rbp),%eax
    114b:       0f af c0                imull  %eax,%eax
    114e:       29 45 fc                subl   %eax,-0x4(%rbp)
    1151:       8b 45 fc                movl   -0x4(%rbp),%eax
    1154:       01 45 fc                addl   %eax,-0x4(%rbp)
    printf("%d\n", a);
    1157:       8b 45 fc                movl   -0x4(%rbp),%eax
    115a:       89 c6                   movl   %eax,%esi
    115c:       48 8d 05 a1 0e 00 00    leaq   0xea1(%rip),%rax        # 2004 <_IO_stdin_used+0x4>
    1163:       48 89 c7                movq   %rax,%rdi
    1166:       b8 00 00 00 00          movl   $0x0,%eax
    116b:       e8 c0 fe ff ff          callq  1030 <printf@plt>
    return 0;
    1170:       b8 00 00 00 00          movl   $0x0,%eax
}
    1175:       c9                      leaveq
    1176:       c3                      retq
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-26 16:08:50 | 显示全部楼层
这种题的主要作用就是告诉你,实操时尽量避免这样写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-26 18:58:18 | 显示全部楼层
-24
先算a-=a*a&#10145;&#65039;a = a - a * a&#10145;&#65039;a = -12
再算a += -12&#10145;&#65039;a = a + (-12)&#10145;&#65039;a = -24
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-29 15:42:38 | 显示全部楼层
就是c语言程序运行的时候是按从右向左
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 20:18:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 高山 于 2022-11-4 20:20 编辑
#include<iostream>
using namespace std;
int main(){
        int n=4;
        n+=n-=n*n;
        cout<<n<<endl;
        return 0;
} 
实际运行效果:
黑灰.png
答案是-24
能不能设置最佳答案?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 15:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表