zoukankan      html  css  js  c++  java
  • 两个无符号类型想减结果存储的临时变量还是无符号类型

     1 #include <stdio.h>
     2 int main()
     3 {
     4     unsigned int dwVal = 0;
     5     unsigned __int64 n64Val = 1;
     6     if( dwVal - n64Val >= 20)
     7     {
     8         printf("%I64d\n",dwVal - n64Val);        //执行这行,输出 -1
     9     }
    10     return 0;
    11 }

    个人分析:

    在做想减操作(dwVal - n64Val)时,会将dwVal和n64Val都转换为unsigned __int64,
    两者想减的结果为-1,存储为0xFFFFFFFFFFFFFFFF,当成unsigned __int64使用
    与 后面的数字(20)进行比较,所以计算结果为true,而打印输出的结果是 __int64类型
    对应值为-1

    进一步验证:

     1 #include <iostream>
     2 int main()
     3 {
     4     unsigned int dwVal = 0;
     5     unsigned __int64 n64Val = 1;
     6     unsigned __int64 n64Val2 = 0xffffffffffffffff;
     7     if( dwVal - n64Val >= n64Val2)
     8     {
     9         printf("%I64d\n",dwVal - n64Val);        //执行这行,输出 -1
    10     }
    11     n64Val2 = dwVal - n64Val;        //n64Val2 = 0xffffffffffffffff
    12     system("pause");
    13     return 0;
    14 }
     1 #include <iostream>
     2 int main()
     3 {
     4     unsigned int dwVal = 0;
     5     unsigned __int64 n64Val = 2;
     6     unsigned __int64 n64Val2 = 0xffffffffffffffff;
     7     if( dwVal - n64Val >= n64Val2)
     8     {
     9         printf("%I64d\n",dwVal - n64Val);        //执行不到这里
    10     }
    11     n64Val2 = dwVal - n64Val;        //n64Val2 = 0xfffffffffffffffe,小于n64Val2
    12     system("pause");
    13     return 0;
    14 }

    有感于GetTickCount() 49.7天后计数置零

    _LogTick = ::GetTickCount64();
    
        //DoSomething;
    
        if(::GetTickCount() - _LogTick >= LOG_TICK_MAX)
        {
            printf("%I64d\n",::GetTickCount() - _LogTick);
        }
  • 相关阅读:
    基于Grafana+SimpleJson的灵活报表解决方案
    Scala安装时的坑
    Windows批量添加防火墙例外端口
    VMware与Hyper-V
    InfluxDB:cannot use field in group by clause
    .Net版InfluxDB客户端使用时的一些坑
    KafkaManager中Group下不显示对应Topic的解决方案
    Linux下查看Go语言软件运行情况
    Flink升级到1.4版本遇到的坑
    spring cloud(一)带你进入分布式
  • 原文地址:https://www.cnblogs.com/felove2013/p/4335022.html
Copyright © 2011-2022 走看看