zoukankan      html  css  js  c++  java
  • [C]if (CONDITION)语句中CONDITION的情况

    编译环境:
    Ubuntu 12.04: gcc
    Windows XP  : VS-2005

    深入一下if (CONDITION)语句中CONDITION的情况。即CONDITION何时为真,何时是假。

    測试代码主体例如以下:
    int main(int argc, char *argv[])
    {
    	if (CONDITION)
    		printf("true.
    ");
    	else
    		printf("false.
    ");
    
    	return 0;
    }
    情境1:
    CONDITION: 
    (1) /* true  */
    (0) /* false */
    (-1) /* true  */
    结论:0为假,非零即真。



    情境2:
    signed int value1 = 11;
    signed int value2 = 328;
    CONDITION: 
    (value1 - value2) /* true - 同[情境1]的第3种情况 */
    ((value1 - value2) > 2000) /* false */

    情境3:
    unsigned int value1 = 11;
    unsigned int value2 = 328;
    CONDITION: 
    (value1 - value2) /* true  - 同[情境1]的第3种情况 */
    ((value1 - value2) > 2000) /* true  */
    这里涉及数据类型的“隐式转换”,(value1 - value2)的结果被隐式地转换成unsigned int类型,转换方式是(value1 - value2)的补码
    ((value2 - value1) > 2000) /* false */

    情境4:
    int value1 = 11;
    unsigned int value2 = 328;
    结果同情境3。
    数据类型的“隐式转换”。假设当中一个操作数是unsigned int, 则还有一个操作数也被视为unsigned int
    (value1 - value2) /* true  */
    ((value1 - value2) > 2000) /* true  */

  • 相关阅读:
    Promise关键知识
    CSS实现简易的轮播图
    绝对定位和相对定位的一些特性
    行内元素及其浮动
    webpack实践总结
    less语法详解
    js模拟事件
    jquery各种事件绑定的区别
    前端路由实现的关键知识点
    js鼠标事件相关知识
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7110400.html
Copyright © 2011-2022 走看看