回 帖 发 新 帖 刷新版面

主题:求c的基础习题的解析

这有几道题希望能有前辈指点:
1.    对于以下字符串,strlen(s)的值为:         A        
(1)  char  s1[]="\t\"\\\\\0abc\n";
(2)  char  s2[]="\x69\33\n";
(3)  char  s3[]="\t\082\n";
A.    4、3和1    B.    4、3和3    C.    16、3和3    D.    16、3和10
strlen()返回的有效长度是指什么啊?
2.    表达式076432&~01777的结果是_______D_____。
A.    432    B.    0432    C.    76000     D.    076000
这样的问题是要展开成二进制吗?
3.( C )设有如下定义int a[ ]={10,11,12},*p=&a[0];则执行完*p++; *p+=1;后a[0],a[1],a[2]的值依次是           。
A.    10,11,12    B. 11,12,12    C. 10,12,12     D. 11,11,12 
*p++; *p+=1;这两条语句不等效吗?单目运算符和赋值运算符不都是从右到左的吗?

回复列表 (共1个回复)

沙发

1 strlen返回的是到第一个\0之前的字符总数
2 转化成2进制会比较直接,也可以不用,~01777=07777-01777=06000
3 不等效,注意解引用的*比+=的优先级要高。参考http://baike.baidu.com/view/262524.htm

我来回复

您尚未登录,请登录后再回复。点此登录或注册