注册 登录
编程论坛 C++教室

请问怎么交换一个字符的前四位与后四位,然后输出交换后的字符

千里之外W 发布于 2013-12-26 14:25, 385 次点击
谢谢,急用
6 回复
#2
peach54602013-12-26 14:36
先获取前四位,然后把后四位移位,再把前四位加进去
#3
rjsp2013-12-26 16:13
我无聊,翻译一下C中移位的规定:

1。每个操作数都应当是整数类型

2。每个操作数都先进行整型提升,结果类型是左操作数整型提升后的类型。如果右操作数为负数或大于等于左操作数整型提升后的位宽度,其行为是未定义的(the behavior is undefined)

3。对于E1<<E2
如果E1是unsigned类型:结果是……(地球人都知道),溢出时保留低位。
如果E1是signed类型:值为非负,且不溢出,结果是……(地球人都知道);否则,其行为是未定义的(the behavior is undefined)

4。对于E1>>E2
如果E1是unsigned类型,或者为signed类型但值非负,结果是……(地球人都知道)
如果E1是signed类型,且值为负,结果是 实现定义的(implementation-defined)。
#4
rjsp2013-12-26 16:31
对于字符类型,C语言中一共有三个,分别是 char、signed char 和 unsigned char
char 是signed还是unsigned,由编译器自行决定。
但即使编译器将char设为signed类型,char  和 signed char 仍属于两个不同的类型,虽然此时两者行为一致
但即使编译器将char设为unsigned类型,char  和 unsigned char 仍属于两个不同的类型,虽然此时两者行为一致
#5
rjsp2013-12-26 16:31
(char)( ((unsigned char)c<<4) | ((unsigned char)c>>4) )
#6
wp2319572013-12-27 08:15
交换是可以  但是交换后 未必就是可输出(可见)字符了
#7
peach54602013-12-27 08:18
以下是引用rjsp在2013-12-26 16:31:09的发言:

对于字符类型,C语言中一共有三个,分别是 char、signed char 和 unsigned char
char 是signed还是unsigned,由编译器自行决定。
但即使编译器将char设为signed类型,char  和 signed char 仍属于两个不同的类型,虽然此时两者行为一致
但即使编译器将char设为unsigned类型,char  和 unsigned char 仍属于两个不同的类型,虽然此时两者行为一致

我没想这么多
1