C++ Linux RHEL 7.2 c++;,==测试失败
我看到一个问题如下: 我有一个长整型来表示一个tid,稍后我使用pthread_self()通过一个简单的检查来检查这是否与当前tid相同:C++ Linux RHEL 7.2 c++;,==测试失败,c++,linux,rhel,C++,Linux,Rhel,我看到一个问题如下: 我有一个长整型来表示一个tid,稍后我使用pthread_self()通过一个简单的检查来检查这是否与当前tid相同: if(my_cachedTID == pthread_self()) printf("TIDs match"); else printf("TIDs don't match %u : %u ", mycachedTID , pthread_self()); 有时,我得到的输出是“TID不匹配123456:123456” 这里123
if(my_cachedTID == pthread_self())
printf("TIDs match");
else
printf("TIDs don't match %u : %u ", mycachedTID , pthread_self());
有时,我得到的输出是“TID不匹配123456:123456”
这里123456只是一个例子。我的意思是,它说不匹配,即使它们实际上是相同的值,相同的代码在大多数情况下都有效,但有时不匹配。在它说TID不匹配的情况下,我添加了以下代码
long int diff = my_cachedTID - (long int) pthread_self();
printf("%u",diff); //prints 0 , which is correct..
我只是不知道。。为什么==在打印两者的相同值时失败,并且在打印时差异为0。
感谢您的指点。我建议您阅读。我的不好我真的没有注意到这些音符。。你能把这个作为答案加上吗。谢谢