这个代码是否有 UB

学术版

Spasmodic @ 2021-11-08 23:21:03

#include<bits/stdc++.h>
using namespace std;
int a(0<a<90);
int main(){
    cin>>a;
    cout<<(90-a);
    return 0;
}

顺便一提,这个应该是出自某个上课没听讲的社员之手

有人说 a 没有初始化是 ub,来问一下真不真


by 约瑟夫用脑玩 @ 2021-11-08 23:23:07

0<a<90 是个啥?


by Spasmodic @ 2021-11-08 23:24:16

@约瑟夫用脑玩 简单来说,我这道题的题面写的是 输入一个整数 a0<a<90),然后这个人直接照抄了


by 约瑟夫用脑玩 @ 2021-11-08 23:26:06

那就是 < 是从左往右还是从右往左?个人感觉 ub 了


by Spasmodic @ 2021-11-08 23:26:52

算了,判为 ub 好了


by ieeqwq @ 2021-11-08 23:27:07

不管第三行u没ub,cin成功把原来的值覆盖了就好


by andyli @ 2021-11-08 23:28:46

这里是 a 未初始化前使用,ub


by 约瑟夫用脑玩 @ 2021-11-08 23:29:10

0<a<90 默认的从左往右结合顺序到底算不算 ub 啊?我一直不敢用,现在想好像有这个东西(指默认顺序


by 已注销yj!gBUM @ 2021-11-08 23:38:38

这是本地运行的结果(报Warning),开O2是直接在编译命令后面加上-O2吗?


by 已注销yj!gBUM @ 2021-11-08 23:39:37

神奇的是,这么写居然能通过编译?


by lgswdn_SA @ 2021-11-09 06:37:00

感觉应该是可以

不过这个语句含义就不是这样的了 /youl


| 下一页