隐式的else编译器优化

隐式的else编译器优化,第1张

概述我想知道编译器是否有办法理解两个if语句不能同时为true,并添加“隐式else”.例如,在此代码示例中: int main() { char c; scanf_s("%c", &c, 1); if (c == '1') { printf("received 1\n"); } if (c == '2') { printf(" 我想知道编译器是否有办法理解两个if语句不能同时为true,并添加“隐式else”.例如,在此代码示例中:

int main() {    char c;    scanf_s("%c",&c,1);    if (c == '1') {        printf("received 1\n");    }    if (c == '2') {        printf("received 2\n");    }    return 0;}

c不能是’1’和’2′,但是在Visual Studio中进行编译和反汇编后,我注意到它会检查第二个是否,无论如何.

解决方法

I want to kNow if there is way for the compiler to understand that two if statements can’t be true at the same time,and to add an “implicit else”.

是的:英特尔C编译器icc 17可以用Matt Godbolt’s Compiler Explorer验证,但clang和gcc似乎都没有执行此优化.

总结

以上是内存溢出为你收集整理的隐式的else编译器优化全部内容,希望文章能够帮你解决隐式的else编译器优化所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1228811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存