#include <iostream>
int main(int argc, char* argv[])
{
unsigned long mask = 0x00000001;
unsigned long mask1 = 0x00000001;
unsigned long mask2 = 0x00000010;
if ((mask and mask1) && (mask and mask2))// CONDITION_1 is True.
std::cout << "Ohhhhhhh..." << std::endl;
if ((mask & mask1) && (mask & mask2)) //CONDITION_2 is False.
std::cout << "No Output..." << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为CONDITION_1和CONDITION_2都是假的,但我的想法显然是错误的,为什么'和'和'&'在C++中不一样?
#include <stdio.h>
int* _pTest1(void) {
int a = 10;
int *_pA = &a;
return _pA;
}
int* _pTest2(int a){
int* _pA = &a;
return _pA;
}
int main()
{
int* _pT = _pTest1();
printf("%d\n", *_pT);
_pT = _pTest2(20);
printf("%d\n", *_pT);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
1073831176
20
Run Code Online (Sandbox Code Playgroud)
为什么第一个输出不是10,而是1073831176?func _pTest1中的'return _pA'和func _pTest2中的'return _pA'之间有什么区别?