...一个概念性问题,我很难理解。希望C理解的深的给我详细解释解释...
分析一下:*(a+i)[j]。1.首先,因为[]优先级(顶级)高于*(次顶级),所以应先算[]。所以先只看(a+i)[j]。2.然后,这里一堆的东西不好看,做个简化:因为a是二维数组的名字,故a+i是第i行的行指针,相当于一个一位数组的数组名。把a+i记作x,那么(a+i)[j] 就可以记成 x[j]。
C语言问题 解释下这个问题
~表示取反:是一个单元(目)运算符,用来对一个二进制数按位取反,即将0变1,1变0.而3的二进制形式为:00000011 所以~3的值为:11111100 而2+X的值为:00000010+00100111=00101001 ^表示“异或”运算符:“异或”运算符也叫XOR运算符。它的规则是:若参加的两个二进制数同号,则结果为0,(假...
C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因
所以a<b?a:c<d?c:d 可以看成 a<b?a: (c<d?c:d) 1 < 4 ? a : (c < d ? c:d)括号内的表达式也可以看做是一个元素 因为 a = 1 b = 4 所以 条件 a < b 成立 所以选前者 a 答案就是 A) 1
C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第一项的结果不正确。第二项和第四项结果等同都是指向指针的指针操作。可以将二维数组看成一个双重指针,第一个中括号是一个一重指针。比如说a[n][m]中a[0]是一个指向a[0][m]数组首位a[0][0]的指针,而a则是指向指针数组*a[n]的首位a[0]的指针。这样我们来看B选项,*(a+2)表示一...
...帮忙解答,追加悬赏喔。麻烦把各个选项都解释解释最好了:)_百度知 ...
这个union是表示,一块储存空间用short,long,char,三种类型来描述,所以c[0] 与i[0]一样的。这个程序是要打印s->c[0],printf("%x\\n", s ->c[0])这句里的%x表示打印的数字是十六进制的。由于c[0]里面放的是0x39,所以这里打印的正好是39.第三题:与第二题类似,注意这里求的是them的...
发现了一个有趣的c语言问题,请各位大神帮忙解释一下。
2.scanf("%d",20000)这句合法并没有什么难以理解的地方,因为指针归根到底也只是一个地址值罢了,直接用地址值和直接用指针,这没有任何区别,最多就是编译器会警告你一下。不知道你说的“”自己定义一个函数比如f(*pointer);然后在用这种方法就会报错“”是什么意思 看下面代码 include <stdio.h...
一道C语言问题 麻烦帮我解释一下!
输出是321 这里主要涉及到ASC码表对应以及char和int类型隐式转换的问题,需要记住的是:一个字符类型的数据,在进行+、-、*、\\等运算时,编译器会隐式类型转换为该字符对应的ASC码值来计算。char x=123; 该句将x初始化为ASC码值为123的字符。开始循环时,x存放字符的ASC码值为123,因此x%10=3...
能帮忙解释一下这道c语言题目吗?
题目要求与条件表达式等价,就是把这个选项替换掉条件表达中的(x-y)时,条件表达式的执行结果不变。条件表达式的需要:(x-y)如果等于true,需要x与y不相等,(x-y)如果等于false,需要x等于y 选项D结果如果为true,则x等于y,如果为false,则x不等于y。正好与要求相反。
C语言 问题 解释下。。运行结果怎么是8,17 8理解 17就纳闷了 自己算是...
原因是函数func()中的变量m,和i是静态变量 (当函数执行一次后,静态变量会保存运行结果,当下次调用时,将会沿用上次的运行结果。)也就是说,执行一次func()后,m=8,i=3;这样就使得第二次运行的结果为17。静态变量的生存周期是整个源程序,即,当你关闭整个程序,重新打开运行时,变量会回到初始...
C语言,求问这道题的答案到底是C还是D呀,顺带解释下原因吧,感谢
所以选择D。也许你有疑惑,那为什么D选项里面是f(int array[2][5])呢?实际上刚刚已经说了,array表示的是指针而不是具体的数组,所以int array[2][5]会被编译器解释为int array[][5]。而实际上第一个括号里面是可以填入任意的数字的,反正被编译后都会被解释为int array[][5]...