c语言是什么问题 输出结果是什么?为什么?

请教大家一个C语言的题目,当执行下列程序时输入:,输出结果是什么啊_百度知道
请教大家一个C语言的题目,当执行下列程序时输入:,输出结果是什么啊
n&%d&quot,&i),%s \;
int c,%d,i,s),c,,&c);;%c&
scanf(&quot,s);%s&%cmain()
{ char s[100]
参考答案是 1,23,456
提问者采纳
我这里用的sizeof(int)==4所以在-~范围之内,,所以只取一个字符,因为输入的时候用%c格式输入,也就是输入的1,char是一个字节,后面的自然就给了i再输入的就全部给了数组s 跟编译器有关吧,所以对于数组还要再输入一次如果sizeof(int)==2则范围为-感觉参考答案不对吧1
提问者评价
其他类似问题
c语言的相关知识
按默认排序
其他3条回答
&i);兄弟输一次是不行的;
得到的结果就是你的参考答案了,必须输两次才可以的呀!除非是这样的 scanf(&%2d&quot
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言,想知道输出结果是什么,为什么?_百度知道
提问者采纳
4p指向了a输出的结果是 。所以输出此时p指向的元素内容。p++,也就是指向了a数组的第一个元素:*p就是4了,就是指向了第二个元素
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言 控制输出 不懂结果为什么是102和10?_百度知道
c语言 控制输出 不懂结果为什么是102和10?
y=012;.h&int main(void){int x=102,x#include&printf(&%2d;n&quot,y);return 0,%2d&#92
提问者采纳
注意y=012。转换成10进制就是10咯,所以输出102 10;这样的赋值意思是给y赋8进制的12
提问者评价
初学者 谢谢点拨
其他类似问题
按默认排序
其他5条回答
%2dprintf(&quot,y),x;第二个参数是8进制;n&n&%2d,printf自动转换了;,%2d\等于printf(&quot,%2d\!所以结果是 102,102,012)
首先百分号后面2表示它一共占几个位,没有前面空着,而102要占3个为,系统默认往后延。后面前面加0是8进制的表达方式,你改成09试试就会出错。
y=012;这样的赋值意思是给y赋8进制的12,转换成10进制就是10
估计就是老师出得题,简单还容易让人犯错,基础知识,十六进制
102很明显 吧?
你是10不懂的吧?012
这个数字 不是 十进制中的12
是八进制中的 12因为C语言中 以 0 开头的数字 是被视为 八进制的八进制的12 就是 10进制中的10
printf %d 这个%d输出就是 10进制的
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言中size of 输出结果是什么?_嵌入式学习吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:977贴子:
C语言中size of 输出结果是什么?收藏
啊?哦~!
是C的一个关键字,用于计算类型的大小。一直就这么认识sizeof。
今天遇到一个问题:
int&i&=&3,&j;
j&=&(&(++i)&+&(++i)&);
i等于多少,就等于多少?
毫不犹豫的回答:“i等于5,j等于4”。
敲到机器里一运行,大惊失色,哎?i怎么还是3呢?
知之为知之,不知之,于是赶紧搜索......
才发现的计算是在编译决定的,不会参与运行,因此事实上sizoef后面无论跟的什么,都不会在程序执行期间发生。
恍然大悟,哦~原来如此。看来,自认为很熟悉的东西,也要认真推敲啊~&
1楼 14:08&|
登录百度帐号
内&&容:使用签名档&&
为兴趣而生,贴吧更懂你。&或C语言malloc函数的问题 我在下面函数两次用malloc给*p共6个单位内存。结果输出的话只有后面3个可以用为啥_百度知道
C语言malloc函数的问题 我在下面函数两次用malloc给*p共6个单位内存。结果输出的话只有后面3个可以用为啥
}for(i=0;;i& scanf(&);6;n int putint *p; scanf(&;%d&quot,i,p+i);i++) { printf(&i++) { printf(&i& for(;} p = (int *)malloc(3*sizeof(int));i&%d &quot:&i++)printf(&quot,p[i]); for(i=0; p = (int *)malloc(3*sizeof(int));3;);6;%d&quot,p+i);\&#92:&
提问者采纳
用relloc,然后p=a,当然只有后3个了,那第二次不要用malloc;再printf,p=b,p=b。如果你想连续上,然后赋值第一次malloc有一个地址(a),然后赋值了;第二次malloc也有一个地址(b),那输出的就是b对应空间里的3个值,这个时候
提问者评价
谢谢 这正是我想要的。 上楼的很感谢你们的回答,可能是我表述不清楚 ,不好意思。我只想有1个指针
其他类似问题
malloc函数的相关知识
其他3条回答
第二次的malloc覆盖了第一次的malloc,开辟的临时空间只有3个 使用的当然只能是3个。
那要怎么办呢?
不知道你的意图想创建一个临时空间 改成p = (int *)malloc(6*sizeof(int));想创建二个临时空间 第二个指针改下名字就可以了
给p分两次赋值,p指向的内存空间不存在任何关系。这样第二次赋值p后,又从第四个地址赋值,前三个地址没有赋值,当然输出很奇怪的结果了。
请问要怎么办?就是malloc的多次给空间和赋值的注意问题,。。
你分两次分配内存,前一次3个int,可惜你把它丢失了,第二次分配了三个还用这个指针,你没给新内存头三个int赋值,直接越界写了界外的3个int单元,程序没有立即崩溃已经是很侥幸了int *p, *p1,i;p = (int *)malloc(3*sizeof(int));for(i=0;i&3;i++){ printf(&\n int put:&); scanf(&%d&,p+i);}p1 = (int *)malloc(3*sizeof(int));for(i=0; i&3; i++){ printf(&\n int put:&); scanf(&%d&,p1+i);}for(i=0;i&3;i++)printf(&%d &,p[i]);for(i=0;i&3;i++)printf(&%d &,p1[i]);
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言中 是什么意思 的文章

 

随机推荐