实时搜索: long int 几个字节

long int 几个字节

554条评论 4997人喜欢 6360次阅读 626人点赞
1、char ch="A"这个语句在6.0里面是报错的,而在2013里面却显示是正确的。
char ch='AB'也是一样,6.0报错,2013显示正确,这是为什么?
2、关于intgen long int,是不是在6.0里面int是两个字节,long是四个字节,而在2013里面他们的额字节长度是一样的?

我现在在学C语言,电脑系统装的是win8.1,不能装VC6.0,无奈装了2013,但是目前学下来,感觉课程学的跟在2013上操作的有好多出入,,该怎么办。。 , #include<stdio.h>
main()
{<...

C语言如何打印int long double 结构体变量各个字节的内: #include <stdio.h>
int main(void){
int a=15;
long float b=123.1234567;
double c=12345678.1234567;
char d='p';

printf("a=%d\n", a);
printf("a(%%d)=%d, a(%%5d)=%5d, a(%%o)=%o, a(%%x)=%x\n\n",a,a,a,a); // %% 可以输出 %

printf("a=%f\n", b);
printf("b(%%f)=%f, b(%%lf)=%lf, b(%%5.4lf)=%5.4lf, b(%%e)=%e\n\n",b,b,b,b);

printf("c=%f\n", c);
printf("c(%%lf)=%lf, c(%%f)=%f, c(%%8.4lf)=%8.4lf\n\n",c,c,c);

printf("d=%c\n", d);
printf("d(%%c)=%c, d(%%8c)=%8c\n",d,d);
return 0;
}

自己跑一下试试就明白了

51单片机中怎么将uchar data access[5];转换为int数字格式?: int一般为4个字节,你的uchar data access[5]有5个字节,怎么对也会多一个字节。
你自己搞清楚到底是要舍弃哪一个字节,或者头或者尾
(1)简单做法
data = *((int *) &(access[0])); // 取0,1,2,3
data = *((int *) &(access[1])); // 取1,2,3,4
(2)上述方法没考虑到对齐和字节序,为了对齐,通用做法是逐字节拼
取0,1,2,3, 大端字节序
data = ( ((int)access[0]) << 24) & 0x0ff000000 )
| ( ((int)access[1]) << 16) & 0x000ff0000 )
| ( ((int)access[2]) << 8) & 0x00000ff00 )
| ( ((int)access[3]) << 0) & 0x0000000ff )

取0,1,2,3, 小端字节序
data = ( ((int)access[3]) << 24) & 0x0ff000000 )
| ( ((int)access[2]) << 16) & 0x000ff0000 )
| ( ((int)access[1]) << 8) & 0x00000ff00 )
| ( ((int)access[0]) << 0) & 0x0000000ff )
取1,2,3,4, 大端字节序
data = ( ((int)access[1]) << 24) & 0x0ff000000 )
| ( ((int)access[2]) << 16) & 0x000ff0000 )
| ( ((int)access[3]) << 8) & 0x00000ff00 )
| ( ((int)access[4]) << 0) & 0x0000000ff )
取1,2,3,4, 小端字节序
data = ( ((int)access[4]) << 24) & 0x0ff000000 )
| ( ((int)access[3]) << 16) & 0x000ff0000 )
| ( ((int)access[2]) << 8) & 0x00000ff00 )
| ( ((int)access[1]) << 0) & 0x0000000ff )

socket套接字的运用: int socket(int family,int type,int protocol);
功能:创建一个通过tcp/ip协议发送和接收网络数据的Socket
返回值:成功返回Socket描述符,失败<0
参数:family:指明协议族(AF_INET,AF_INET6AF_LOCAL,AF_ROUTE,AF_KEY)
type:指明套接字类型:(SOCKET_STREAM,SOCK_DGREAM,SOCK_SEQPACKET,SOCK_RAW)
protocol: 指明协议类型,0时由family和type一起决定
Linux 内核将Socket描述符和文件进行统一管理,所以可以将Socket看做特殊文件
int close(int sockfd)
功能:关闭套接字
返回值:成功返回0,失败<0
参数:已经发开的套接字描述符

family决定地址类型:
当为AF_LOCAL(相当于AF_UNIX)
struct sockaddr_un
{
sa_family_t sun_family; /* AF_UNIX */
char sun_path(); /* pathname */
}
当为AF_INET时:
struct sockaddr_in
{
short int sin_family ; /* AF_INET */
unsignde short int sin_port ; /* port number */
struct in_addr sin_addr ; /* Internet address */网络字节序
}

struct in_addr
{
unsigned long int s_addr ; //IP地址为 32 位 IPV 4 地址 网络字节序
}
后续Socket为了兼容更多类型,采用一下结构:
struct socket
{
short int sin_family;//协议族
char sa_data[14];//协议制定地址
}
在使用这些函数时候我们可以强制类型转换

主机字节序:某个给定的主机系统所用的字节序,它由cpu决定
网络字节序:网络协议制定的字节序,网络协议使用大端字节序来传送多字节整数
unsigned long int htonl(unsigned long int hostlong)
unsigned short int htons(unsigned short int hostshort)
unsigned long int ntohl(unsigned long int netlong)
unsigned short int ntohs(unsigned short int netshort)
备注:h代表host n代表network s代表short l代表long

常用字节操作:
void *memset(void *dest,int ch,size_t len)
void *memcpy(void *dest,const void *src,size_t nbytes)
int memcmp(const void *ptr1,const void *ptr2,size_t nbytes)
void bzero(void *dest,size_t nbytes)等价于memset(dest,0,nbytes);

十进制与32位地址转换:
int inet_aton(const char *strptr,struct in_addr *addrptr)//字符串有效返回1,否则为0
char *inet_ntoa(struct in_addr inaddr)
注: struct in_addr inaddr 均指网络字节序32位ip地址
inet_ntoa 函数的结果位于静态数据区
域名与地址转换:
struct hostent *gethostbyname(const char *hostname);
struct hostent *gethostbyaddr(const char *addr,size_t len,int family)//addr是struct in_addr

关于 VC6.0跟VC2013里面的区别疑惑: 2013里char ch="A"是报错的,而且这个也不符合规范。char ch=‘AB’;这个是符合规范的。
int 和long现在都是4字节,这个是由编译器决定的,不同的编译器所支持的数据类型是有些差别的。
现在4字节int都有点吃力了,如果还是采用2字节int也太不与时俱进了。
不要在这些上面太过计较。教材上的不一定是对的,考试看教材,码代码就要根据编译器来定了。
我从官方上看到的int主流就是4字节的。现在大家讨论的是64位整型了。

int short long有什么区别?: short -- 固定16位
long -- 固定32位
int -- 不同编译环境不一样,可能16位,也可能是32位

C语言求字节字节: 在vc中int是占4个字节 所以3个int 占12个
在tc中int占2个字节 就占6个
一般书上说的都是int 2字节,long int 4字节,
vc 中int 和 long int 都是4字节

整型数据类型中的byte .short .int .long有什么区别?如题 谢谢了: 数值的保存范围... byte是一字节 short一般是两字节 int是四字节 long也是四字节... (上面说的是VC编译的,这个多少字节和编译有关系的...在TC下又有所不同)

  • 18位大亨是谁

    世界上高度最高的瀑布在哪个国家?: 世界最高瀑布景观(18张)安赫尔瀑布(Angel Falls,通常依字义译为天使瀑布,但不合语源),又名丘伦梅鲁瀑布,世界十二大瀑布之一。当地的印第安人取名为“出龙”。位于南美洲委内瑞拉玻利瓦尔州的圭亚那高原,卡罗尼...

    568条评论 4862人喜欢 4925次阅读 620人点赞
  • 2016年最新的电视剧有哪些

    DNF蓝拳PK加点,本人有满级朋友带满意加+(200)+: 启示 武器祝福+5 这东西40前加攻有用,5的命中终身有用,反正没加的时候杀怪来个MISS 什么都完了 缓慢愈合自带1 都主PK嘛 这就没什么意义了。但是那加血动作在PK心理战的时候很有用 比如有枪去委琐了,你去他水...

    392条评论 5728人喜欢 4808次阅读 975人点赞
  • ipad哪个迅雷下载

    求dnf中一套装备用仓库和自身负重增加伤害的?: 那是一把45级史诗巨剑,叫地灵绝魂剑 ...

    986条评论 3700人喜欢 6325次阅读 217人点赞
  • hpv58阳性如何治疗

    DNF我们朋友一起要玩男格斗 想起一个统一一点的名字 谁告诉下: 街头小子,街头霸王,闪电小子,旋风小子,李小龙是也,李连杰来也,黄飞鸿走也,成龙去也 ...

    962条评论 1664人喜欢 2429次阅读 261人点赞
  • 211南方的大学有哪些大学

    电信光纤50兆下载正常 玩dnf PK很卡很延迟 一直以为是电脑问题 朋友也是50兆光纤网dnf一点也不延迟: 你看看是不是有人偷用你流量呢?下个360路由卫士 在里面看看 ...

    444条评论 2936人喜欢 6386次阅读 362人点赞