① c语言中如何输出长整型数值
在C/C++中,64为整型一直是一种没有确定规范的数据类型。现今主流的编译器中,对64为整型的支持也是标准不一,形态各异。一般来说,64位整型的定义方式有long long和__int64两种(VC还支持_int64),而输出到标准输出方式有printf(“%lld”,a),printf(“%I64d”,a),和cout << a三种方式。
本文讨论的是五种常用的C/C++编译器对64位整型的支持,这五种编译器分别是gcc(mingw32),g++(mingw32),gcc(linux i386),g++(linux i386),Microsoft Visual C++ 6.0。可惜的是,没有一种定义和输出方式组合,同时兼容这五种编译器。为彻底弄清不同编译器对64位整型,我写了程序对它们进行了评测,结果如下表。
上表中,正确指编译通过,运行完全正确;错误指编译虽然通过,但运行结果有误;无法编译指编译器根本不能编译完成。观察上表,我们可以发现以下几点:
long long定义方式可以用于gcc/g++,不受平台限制,但不能用于VC6.0。
__int64是Win32平台编译器64位长整型的定义方式,不能用于Linux。
“%lld”用于Linux i386平台编译器,”%I64d”用于Win32平台编译器。
cout只能用于C++编译,在VC6.0中,cout不支持64位长整型。
表中最后一行输出方式中的printint64()是我自己写的一个函数,可以看出,它的兼容性要好于其他所有的输出方式,它是一段这样的代码:
CPP
void printint64(long long a)
{
if (a<=100000000)
printf("%d ",a);
else
{
printf("%d",a/100000000);
printf("d ",a0000000);
}
}
这种写法的本质是把较大的64位整型拆分为两个32位整型,然后依次输出,低位的部分要补0。看似很笨的写法,效果如何?我把它和cout输出方式做了比较,因为它和cout都是C++支持跨平台的。首先printint64()和cout(不清空缓冲区)的运行结果是完全相同的,不会出现错误。我的试验是分别用两者输出1000000个随机数,实际结果是,printint64()在1.5s内跑完了程序,而cout需要2s。cout要稍慢一些,所以在输出大量数据时,要尽量避免使用。
② c语言中如何把整型变成长整型
定义的时候就定义为长整型不就行了
③ 关于C语言中长整型数
1.
长整型:有符号整数;满足sizeof(long)>=sizeof(int),一般32位平台sizeof(long)为4;此外由于sizeof(short)<=sizeof(int),所以sizeof(long)>=sizeof(short)。
2.常量:不能被修改。
常量在c语言中是数值字面量。字面量后缀为l或l,表示long,例如1234l、0l。如果不带后缀,默认为int字面量而不是long字面量,即不是长整型常量。
④ C语言里怎么把数字字符串12345转换为长整型字符12345,只用strlen函数和基本数据运算来编译函数fun()。
#include<stdio.h>
longfun(char*s);
intmain(void)
{
printf("%ld ",fun("123456"));
return0;
}
longfun(char*s)
{
longsign,n;
for(n=0,sign=1;*s;++s)
{
if(*s=='-')
{
sign=-1;
}
else
{
n=n*10+*s-'0';
}
}
returnsign*n;
}
⑤ 在C语言中实型怎么转化成整形
一、问题分析:你的问题中“实型转化为整型”其实就是强制类型转换;
二、概念说明:强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型;
三、应用举例:
main()
{
floata;
a=3.1415926;
(int)a;//转换后a=3,而不是3.1415926
}
原本的单精度实型变量a=3.1415926,经过(int)a语句强制转换为int整形变量后,a=3。
⑥ c语言中如何把整型变成长整型
短整型还用表示??默认的!!你随便定义的常量,变量就是短整型,要是想要精确值高的话,就定义成长整形行了!!
⑦ c语言 把一个数字字符串转换成长整型 若输入数字字符串1234转成长整型1234
把for(i=len-1;i<=0;i--)改成for(i=len-1;i>=0;i--)。
把x+=n*p[i];改成x+=n*(p[i]-'0');。
最好把gets(s);改成scanf("%s",s);。
⑧ C语言字符转换成整形的方法是什么
转换有两种方法:
第一种用“atoi”的:
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
voidmain()
{
charstr[1024]={0};
intInterger;
printf("输入一个数字: ");
scanf("%s",str);
Interger=atoi(str);
printf("转换为整形:%d ",Interger);
getch();
}
第二种:
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
voidmain()
{
charstr[1024]={0};
intInterger;
printf("输入一个数字: ");
scanf("%s",str);
sscanf(str,"%d",&Interger);
printf("转换为整形:%d ",Interger);
getch();
}
⑨ C语言程序设计题,关于将字符串转换成长整型数
s[i]是个数字字符,对应的十进制数字不是字符表面值。直接就乘以位数是不对的。
s[i]-'0';才是对应的十进制整数;另外你这编程思维不太好;一个for就够用了;
⑩ 如何将短整型变量转为长整型变量 C语言分类
双目运算的话,除了赋值以外,直接跟long混合计算就行了,有自动类型转换机制会自动扩充类型。
愿意的话,强制类型转换也行。例如
shoet a;
(long)a就可以把a中的数据转换成long