您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏平台 > 位异或 >

C语言按位异或的问题(关于整型和字符型之间)

发布时间:2019-06-16 18:52 来源:未知 编辑:admin

  /*这段程序是意图是交换两个字符型变量的值,但输出的两个值变成了特殊符号,而不是b,a*/

  /*把程序1中函数swapIntOrChar中的强制整型改为强制字符型,结果输出结果正确,为b,a*/

  /*请问这是怎么回事,都是在指定范围内,为什么互换会不一样*/展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部c和c++从根本上来说,只有三种数据类型:整形。浮点和void类型,字符也是8位整形。int是跟平台位数相关的,现在32位平台一般是32位。

  在你的程序1里面,是传递了x、y两个参数的地址进去,ix iy两个参数所指向的内容只是两个8位的char,在用异或无临时变量交换时候(swapIntOrChar),通过隐式类型转换,ix、iy所指向的内容被解释成了32位的int,也就是异或操作是操作的32位的变量内容,已经越界。不同的编译器,不同的变量分配可能有不同的结果,debug情况下一般不会发生崩溃之类。

  程序2里面的swapIntOrChar 里面强制类型转换采用的是char,是ix iy所指向的原始类型,所以不会有问题。

http://lake-macquarie.com/weiyihuo/262.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有