本文目录一览:
- 1、c语言 按照二进制输出 例如给出 D3, 输出 D: 01000100 3: 00110011
- 2、c语言 int d=3, d1= d++; 输出结果 d=4, d1=3 这个我理解了 d把值交给d1,然后d再加1
- 3、c语言中d=3而a=(++d)+(++d)=10,为什么?
- 4、c语言中a=b=c=d=3这个表达式后,a,b,c,d的值各是多少
c语言 按照二进制输出 例如给出 D3, 输出 D: 01000100 3: 00110011
D3 如果是 16 进制 输出 DD 33 ,应当是 D:11011101 3:00110011
程序如下:
#includestdio.h
main(){
int i;
short int y=0xD3; // 十六进制 数 D3
unsigned char x;
x= (y 0xf0) 4 ;
printf("%1X:",x);
for (i=3;i=0;i--) printf("%1d",(xi) 0x01);
for (i=3;i=0;i--) printf("%1d",(xi) 0x01);
printf(" ");
x= y 0x0f;
printf("%1X:",x);
for (i=3;i=0;i--) printf("%1d",(xi) 0x01);
for (i=3;i=0;i--) printf("%1d",(xi) 0x01);
return 0;
}
如果你的D 编码同 4 ,自己换算一下:x = D-A+1
再套用 for (i=3;i=0;i--) 。。。。
c语言 int d=3, d1= d++; 输出结果 d=4, d1=3 这个我理解了 d把值交给d1,然后d再加1
A、voidfun(int*s,int*d)//d是指针,调用时传入的却是指向指针的指针。{*d=*(s+2);}调用:fun(a,b) B、voidfun(int*s,intd)//d是对整型变量的引用,但调用时实参传入的却是指针。{d=*(s+2);}//左边是一个指针,右边是一个整型变量,赋值错误。调用:fun(a,b) C、voidfun(int*s,intd)//d是对整形变量的引用,参数传递是传址{d=*(s+2);}调用:fun(a,*b) D、voidfun(int*s,int**d)//函数调用和参数都是匹配的。{**d=*(s+2);}调用:fun(a,b)
c语言中d=3而a=(++d)+(++d)=10,为什么?
两个(++d)是同一级别的
首先左边的(++d)之后,d=4,右边的(++d)之后d=5,这里理解最关键了!
因为左边自增后保存的值放在变量d中的并作为中间+号的左操作数,
右边的(++d)执行是在现有的d之上操作的,之后变成5并放在d中,作为+号的右操作数,
同时左值也发生了变化,也变为了5,因为+号左右的操作数都是变量d,
所以a的值就是d+d了,而此时,d=5,所以结果等于10
c语言中a=b=c=d=3这个表达式后,a,b,c,d的值各是多少
=是自右向左结合的
所以原式等价于 a = (b = (c = (d = 3)))
最后a,b,c,d的值都是3,表达式的值也是3