简单的c程序设计语言问题

C语言问题求教(简单的)_百度知道
C语言问题求教(简单的)
#include&stdio.h&int main(void){
printf(&%ld&,(long)a);
请问为什么output显示的不是呢?--------------------------------------------------------------------------后来我又把它改成#include&stdio.h&int main(void){
long long a=;
printf(&%lld&,(long long)a);
请问为什么我的结果跟上一个又不一样了呢? 感谢回答!
提问者采纳
把程序做一下修改进行对比:void main(){long a=; long long b=; printf(&%ld,%x\n&,a,a); printf(&%lld,%llu,%llx\n&,b,b,b); }运行结果为:-,904533ff-999999,aade1ed0904533ff解释:
的十六进制表示为aadde1ed0904533ff占用64位
定义long型变量开设的是32位整形,定义long long型开设64位整形
在内存中存放按字节顺序为: ff 33 45 90 d0 ed e1 de aa
在进行a=;的赋值时,程序会将上边数据的低32位赋值给变量a
结果a相当于被赋值成了十六进制数904533ff(高32位被丢掉了),即十进制,这个数已经超过了32位整形能表示的最大正数范围,所以最高位被当成符号位的输出结果为-。
在进行b的赋值时,所有64位数据都赋值给了b,但这个数仍然超出了64位整形能表示的最大正整数范围,如果按照有符号数输出为-9551617,而当成无符号数输出时才能完整表示。
请问要如何才能在一个语句中输出这样一串数字呢?
你的意思是什么?没看明白要输出哪样的数字,上边程序输出的不是你想要的吗?
可以:unsigned long long a=;printf(&%llu\n&,a);
提问者评价
谢谢帮忙。
来自团队:
其他类似问题
为您推荐:
c语言的相关知识
其他3条回答
long long 能够表示的范围比long的范围要大。。你的那个数字已经超出了long的范围了,但是没有超出long
long的范围,所以可以正常输出,不知道对你有帮助没。。。
可是long long的输出还是不对,是一个7开头的大概有10位的数字
额,你的数都有20多位了。。。已经不在表示范围之内了吧,要是用java写的话,就不会有问题,c++,表示的范围有限,或者你只能用字符数组了
越界了,输出肯定就不一样,long只有32位,如果为64位,应该输得出来,虽然没有测试,其实定义之时就可以判断!!!
这个看不出来
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁第1章 简单的C程序_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
第1章 简单的C程序
C​语​言​教​程
大小:273.59KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢软件工程-C语言--一个简单的C语言编译器软件工程-C
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
软件工程-C语言--一个简单的C语言编译器
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口您还未登陆,请登录后操作!
简单的C语言问题
,一点不懂,请详细一些,还有就是应该像看哪些方面的知识才能解决这样的问题
<a href="/b/8106203.html" title="网页代码网页代码<met...
c=a&b&&++a;
这一句中要注意各种运算符的优先级,自增运算符最高,比较运算符其次,逻辑与运算符最低。而在这里自增运算符位于左边,它表示b先执行加1的操作然后再参与别的运算。所以这一句等效于
c=(a&b)&&(++a);
其执行顺序为:先比较a&b,由于1&2,所以得到的值为逻辑假(用整型表示为0),由于编译器优化的原因,当逻辑与算式的左边为0时就不再执行右边的运算,而直接输出结果0(同样的,当逻辑或版算式的左边为1时也不再执行右边的运算,而直接输出结果1),因此右边的自加操作并没有被执行。
输出语句中将a、b、c都以整型输出,因此结果应该为
a=1,b=2,c=0
C语言方面入门级教程首推谭浩强的《C程序设计(第二版)》,这里提供一个免费下载的页面
点击“下载地址”后会弹出一个新窗口,再点击“下载地址”旁边的链接即可下载(不用去理会上面的注册说明)
算后面的表达式,结果会变成a=2 b=2 c=0
您的举报已经提交成功,我们将尽快处理,谢谢!
大家还关注一道C语言中矩阵转置的简单问题~~_百度知道
一道C语言中矩阵转置的简单问题~~
写一个函数,使给定的一个矩阵数组转置,即行列互换。 比如输入 1 2 3 4 5 6 7 8 9 输出 1 4 7 2 5 8 3 6 9 关于输入 先输入一个正整数n代表矩阵式n行n列的 n的大小不会超过100 关于输出 输出转置之后的矩阵 例子输入 31 2 34 5 6 7 8 9 例子输出 1 4 7 2 5 83 6 9 提示 输出矩阵时行元素之间用&#92;t隔开 每行的最后一个行元素换行。 for (col=0;
col & n-1;
printf(&%d&#92;t&,newMatrix[row][col]); } printf(&%d&#92;n&,newMatrix[row][n-1]);
#include &stdio.h&#include &conio.h&void main(){ int N=100,n; int i=0,j=0; int A[100][100]; int B[100][100]; printf(&输入矩阵的行数(不大于100):n=&); scanf(&%d&,&n); for(i=0;i&n;i++) {
for(j=0;j&n;j++)
A[i][j]=n*i+1+j;
printf(&%d&#92;t&,A[i][j]);
printf(&&#92;n&); } for(i=0;i&n;i++) {
for(j=0;j&=i;j++)
B[i][j]=A[j][i];
B[j][i]=A[i][j];
} } for(i=0;i&n;i++) {
for(j=0;j&n;j++)
printf(&%d&#92;t&,B[i][j]);
printf(&&#92;n&); } getch();}
其他类似问题
为您推荐:
矩阵转置的相关知识
其他1条回答
#include&stdio.h&int mat[105][105];void main(){ int i,j; scanf(&%d&,&n); for(i=0;i&n;++i)
for(j=0;j&n;++j)
scanf(&%d&,&mat[i][j]); for(i=0;i&n;++i) {
for(j=0;j&n-1;++j)
printf(&%d&#92;t&,mat[j][i]);
printf(&%d&#92;n&,mat[n-1][i]); }}
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c程序设计语言 的文章

 

随机推荐