1.1,若x,y,t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为(选C)
A,不定值 B,4 C,3 D,1
对于这道题,可以将t看做bool类型的变量,这就好说了,当编译器执行完++x后,因为整个式子是‘或’的关系,所以可以直接判断整个式子为真(因为++x非0),这就是短路求值,因此++y不执行所以选C
ps:如果问t的值,因为是真,所以为1
2.关于指针的小问题:*p++,*(p++),*p
不多说一切都在代码中:
#include <iostream>
using namespace std;
int main(){
char a[]="Python";
char *b=a;
cout<<b<<endl;
cout<<*b++<<endl;
cout<<*b<<endl;
system("pause");
}
//结果是
Python
p
y
实际上我感觉*p++,*(p++)
的效果是一样的(++的运算优先级比较高)但是就像i++和++i
的问题一样*p++
是先返回自身的所指的值的对象,然后再执行++操作
#include <iostream>
using namespace std;
int main(){
char a[]="Python";
char *b=a;
cout<<b<<endl;
cout<<*(++b)<<endl;
cout<<*b<<endl;
system("pause");
}
输出:
Python
y
y
这下应该明白点了吧