1、int a = 0,b = 0;
do{
–c;
a = a - 1;
}
while(a > 0);
c的结果应该是-1;因为要先判断是有符号数还是无符号数,声明为int表示有符号数为,循环体执行一次,c = -1,如果c是无符号数,则相减会变为一个很大的数,因为无符号数的小数 - 无符号数的大数=小数+大数的补码。
总结:一般在这种相减且判断循环次数时,一定要留意数据类型
2、*++this; //指针解引用操作符优先级大于但目运算符++,故不用加括号,先取值,然后对值++
3、在公有继承中,父类中只有公有成员对子类对象是可见的 (这是正确的)。如下图:
因为protected被继承,在子类内是可见的,但对于子类对象是不可见的
4、关于字符串中的转移字符: printf(“a\bre’hi’y\\bou\n”)
上面printf中包含的转移字符一共有6个,其中‘\b’是退格符,输出时将光标往左边回退一个位置,‘’’为单引号,‘\’为\字符,‘\n’为回车换行符。
所以结果应该为 re’hi’you
5、不能统计一行输入字符个数的是:
n=0;
for(ch=getchar();ch!=’\n’;n++);
因为对于for循环,其初始条件只执行一次,因此ch只从输入流取一个字符,之后就再不会取字符,因此会造成死循环。