小编Mic*_*ael的帖子

C#vs C++三元运算符

我曾经是Windows上的C++程序员.我知道编译器会优化C++中的三元运算符.

C++代码:

#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    int result = argc > 3 ? 1 : 5;
    printf("%d", result);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

由于管道内容,生成的本机代码如下所示(当然是Release模型):

int result = argc > 3 ? 1 : 5;
00B21003  xor         eax,eax  
00B21005  cmp         dword ptr [argc],3
00B21009  setle       al  
00B2100C  lea         eax,[eax*4+1]
Run Code Online (Sandbox Code Playgroud)

C#代码:

namespace TernaryOperatorCSharp
{
    static void Main(string[] args)
    {
        int argc = args.Length;
        int result = argc > 1 ? 2 : 5;
        System.Console.WriteLine(result);
    }
}
Run Code Online (Sandbox Code Playgroud)

我查找了生成的本机代码JIT,但根本没有优化(仍然是两个跳转指令).

int …
Run Code Online (Sandbox Code Playgroud)

c# c++ ternary-operator

13
推荐指数
1
解决办法
546
查看次数

标签 统计

c# ×1

c++ ×1

ternary-operator ×1