C++ 反汇编:数据类型与常量( 五 )

<&printf>]|00411417 | 83C4 08| add esp,0x8|
多目运算符:
int main(int argc, char* argv[]){unsigned int temp;scanf("%d",&temp);printf("%d\r\n",temp == 0 ? 0:-1);// 针对有符号数printf("%d\r\n",temp == 0 ? 1:0);// 针对无符号数printf("%d\r\n",temp >= 1 ? 35:98);// 大于等于return 0;}
针对有符号数
0040F979|.8B4D FCmovecx, dword ptr [ebp-4]0040F97C|.F7D9negecx0040F97E|.1BC9sbbecx, ecx0040F980|.51pushecx; /<%d>0040F981|.68 802E4200push00422E80; |format = "%d"0040F986|.E8 45FFFFFFcallprintf; \printf0040F98B|.83C4 08addesp, 8
针对无符号数
0040F990|.837D FC 00cmpdword ptr [ebp-4], 00040F994|.0F94C2setedl0040F997|.52pushedx; /<%d>0040F998|.68 802E4200push00422E80; |format = "%d"0040F99D|.E8 2EFFFFFFcallprintf; \printf0040F9A2|.83C4 08addesp, 8
大于等于符号
0040F9A5|.837D FC 01cmpdword ptr [ebp-4], 10040F9A9|.1BC0sbbeax, eax0040F9AB|.83E0 3Fandeax, 3F0040F9AE|.83C0 23addeax, 230040F9B1|.50pusheax; /<%d>0040F9B2|.68 802E4200push00422E80; |format = "%d"0040F9B7|.E8 14FFFFFFcallprintf; \printf0040F9BC|.83C4 08addesp, 8