C语言数据类型转换及数组和指针区别-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

C语言数据类型转换及数组和指针区别

a123456678 2016-06-08 21:35:32 1194

今天笔试的几道题,有很大得疑问,自己想不明白的在此求助各位。
1.如下程序输出什么

int main()
{
    unsigned int a=6;
    int b=-20;
    (a+b<=6)?puts("<=6"):((a+b)<14? puts("<14"):((a+b<21)? puts("<21"):puts(">21")));
    return 0;
}
这个题着实让我困惑,在考场上我想既然出这道题肯定输出>21,要不然不会出这个题,可是真的不明白为什么,a+b难道不是-14吗?刚在电脑上运行了下,果然是a+b

第一题,我想不明白的是,如果
2.设有如下定义和语句

char str[20]="maipu",*p;
p=str;
则下列叙述中正确的是:
A *p与str[0]的值相同
B str与p的类型完全相同
C str数组长度和p所指向的字符串长度相等
D 数组str中存放的内容和指针变量p中存放的内容相同
这个题我在考场选得AB,D肯定不对,指针变量p存的是地址,C有点疑问。
C语言
分享到
取消 提交回答
全部回答(1)
  • 西秦说云
    2019-07-17 19:32:47
    • unsigned int和int运算,加减乘除也好,小于大于也好,都是int转unsigned int。转换方式是底层数据不变,改变解释方式。(csapp第二章)
    • b是错的 str虽然能当指针用,但在&和sizeof两个操作符下它是数组 所以说不能说完全相同
      c也是错的 str的大小是20 但是字符串长度是5 数组大小是定义中的大小,但是字符串长度是strlen结果中的长度
    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题