请教一个c语言底层问题,高手回答,关系很大,谢谢

请教一个问题
char a;
a=16;
printf("%d",a);
中a的赋值与下面的赋值有什么区别
char a;
int b=16;
a=b;
printf("%d",a);
中两个赋值过程有什么区别,求教(个人理解a=b有截断赋值,但是直接char a;a=16这个过程是怎么处理的?有没有先为16分配一个空间还是直接给a的变量空间赋值但是赋值的过程是怎么样的?就是机器直接产生一个数是怎么出来的?

机器直接产生的数据是常量,对数值型数据,如果不带小数点,机器默认为int类型
所以,不论是char a=16,还是int b=16; a=b; 都会存在你所说的截断问题

对于一个常量,系统在运行时,会分配一个只读空间来保存。所以,16这个常量在运行时,就会先给它安个家的(在只读内存区给它分配一个存储位置)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-16
先给16分配一个空间

计算机C语言编程问题 高手来 回答好了加分
\/\/你应该好好区分一下“*”在不同位置不同的含义、、、有三种含义;(1)变量的声明时,int a[5];int* p=a;\/\/p就相当于一个a指向的地址的别名。注意:是p而不是*p (2)取值操作:比如在操作语句中,*p表示取位于地址p上的值,如果a[0]=4;那么*p就等于4 (3)乘号:这个就不用解释...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第三项结果是一个指针,也就是一个地址。它就是a[2][1]的地址,由于scanf要求是地址,所以它是正确的。

c语言有一道题不会做,求高手解,最好分析一下。
答案是:C 因为scanf("%c%c",&a,&b);接收的是1和2,在输入后按了“回车”这个回车符会传递到下一句,也就是:c=getchar(); ,这样 c 赋值为回车符了;d=getchar(); 接着就是这句,你输入34的时候,d 只接收单个字符,也就是 3 ;所以最后的输出是:12 3 ...

C语言高手进,一个简单的C语言问题?
一、Y(n) ((N+1)*n)二、z==2*(N+Y(5+1))问题在于这两行语句。第一行,Y里面的n是指函数里面的n,注意,函数里面的n并没有打括号,那么,在第二行里面,Y(5+1)就代替了 ((N+1)*5+1),所以结果就是48~ 如果想改变这个结果,就要在第一行的函数里面的n上面加一个括号改变运算顺序...

c语言编程问题,求高手解答(高分)
你的程序没有大的问题,可以执行,只是以下几个小问题:一、第一行包含的文件不存在,这一行应该删除。二、定义了argc、argv两个变量没有使用,编译会有警告,可以删除他们或者不管,最好改为:int main()三、scanf输入n和k的时候,中间有个逗号分隔,这样输入的时候会麻烦,最好改为:scanf("%d%d...

C语言的数组和指针问题,谢谢高手的解答!
所以B是一个2级常指针,同样指向二维数组的第一个元素B[0],而B[0]是一个一维数组。总结,问题的关键在于,数组名相当于一个指向于这个数组第一个元素的指针。3)所以,int A[2][3][4]={0};A是一个三维数组,其中A[0]和A[1]都是它的元素,A[0]是第一个元素。所以, A是一个三级...

c语言问题,高手请进谢谢!!!
即i+i--->这两个i些时都是3;而不是一个2,一个3;4。再一个++i 此时i加1得到i,i=3+1=4;由上面的理解知道i此时已经是4,5、由上面四步得到一个i=4,i+i+i的式子,写入数据得到12 今天上课还在纠结这个问题,一看到你的问题突然想起来了!呵呵 ...

C语言编程问题!!高手救命,在线等答案
分析过程:重新定义结构体:typedef struct student { float c;float java;} STU;然后在for循环内仅使用:scanf("%f",&stu[i].c); \/\/ 或者&(stu[i].c)scanf("%f",&stu[i].java); \/\/ 或者&(stu[i].java)问题依旧。但如果此时已经定义了float fTmp;并在循环体内这样写:scanf("%f",&...

C语言高手帮忙啊!急!!!
1:第3行,类型定义后面应加上分号,注意与define不同 2:main()函数,在调用CREAT()、LENGTH()和OUT()函数时不应加上linklist、int和void,你这样写是在申明函数,并非调用。3:你创建的链表是一第一个元素为头节点的的,但你却将链表长度赋给头节点,导致原头节点值丢失,无法输出。还有很多...

一些C语言题目!求高手答疑!谢谢了!!!
int a,b,c;如果这样 c=a,b;,c是a,如果是这样c=(a,b),c就是b 所以(x--,--y)是4 而x++是输出printf后再执行的,所以是2 5,(!x || y--),!x说明第一个是假了,x才是真,所以会判断下一个,y=1,所以或表达式中有一个语句是true,即整个表达式的逻辑值为true,所以你输出的...

相似回答
大家正在搜