黑马程序员技术交流社区

标题: C语言一些易犯错误的整理(1) [打印本页]

作者: 林哲生10    时间: 2016-8-2 15:50
标题: C语言一些易犯错误的整理(1)
本帖最后由 林哲生10 于 2016-8-2 21:46 编辑

(1)若有定义:int bb[8];.则以下表达式中不能代表数组元素bb[1]的地址的是().
A &bb[0] + 1
B &bb[1]
C &bb[0]++
D bb + 1
答案:C
解析:&和++优先级相同,结合性从右到左,所以&bb[0]++相当于&(bb[0]++).  bb[0]++这个表达式返回的值是一个常量,不能对一个常量取地址

(2)修改以下程序:
#include<stdio.h>
int main()
{
    int a = 10++;
    return 0;
}
答案:
#include<stdio.h>
int main()
{
    int a = 10;
    a++
    return 0;
}

解析:10++相当于10 = 10 +1;因此常量无法使用++.

(3)判断:
break语句不用用于循环语句switch语句外的任何语句
答案:对
解析:在if中使用也要求if在循环体内

(4)写一个函数,实现将一个整型二维数组内的所有元素,进行从大到小的排序(不能使用指针):
答案:


作者: anan安    时间: 2016-8-2 16:54
第一个好像不是优先级的问题吧 (&bb[0])++ 对吗?
作者: anan安    时间: 2016-8-2 16:55
常量无法++总结的好
作者: 林哲生10    时间: 2016-8-2 17:35
anan安 发表于 2016-8-2 16:54
第一个好像不是优先级的问题吧 (&bb[0])++ 对吗?

嗯嗯,查了一下,++和&优先级相同,结合性是从右到左

(&bb[0])++是正确的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2