由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教C的类型转换问题
相关主题
little endian vs big endian看下这个小程序
C的问题,困惑中在帮忙看看这个吧 C: int->char*
帮忙找个错C 语言,初学者,简单问题
经典题atoi的溢出处理 (转载)const 指针类型转换
multithread: how to lock a threadpython question, easy one
char s[]和char *ps的不同js,php,ruby和python的共同点
请教怎么用#define实现如下的功能A question about class size
关于 big/little endian,为什么对char 有影响?JHQ的一道指针题。
相关话题的讨论汇总
话题: int话题: ps话题: bool话题: 类型转换话题: char
进入Programming版参与讨论
1 (共1页)
s*********d
发帖数: 2406
1
请教
int s=1; //1
int *p;
*p=s ;
char *ps=(char*) p ; //2
printf("ps is %d ,%c", *ps, *ps); //3
bool ps1=(bool) *ps ; //4
1)
//2的值好像还是1,但是这个1好像还是int的?
因为//3 好像第一是1,第二个一个face形状。
2)如果 //1
改成 unsigned int s=1;
是不是没有改变
3)//4 返回 true
关键对于bool 来说是不是只要指向非空内容就应该返回true?
h*******s
发帖数: 8454
2

这个不对 p没初始化 改成 int *p = &s;
或者 int s2; int*p = &s2; *p = s;
假设上面改过来了,这里你把p转换成了一个指向一个byte的指针
前面是把那个byte提出来(恰好是1)作为char,并转换为整形,后面那个直接把那个
byte当char显示了,不知道为啥是笑脸。。。按说应该是什么控制字符来着
不是0的东西都是true吧

【在 s*********d 的大作中提到】
: 请教
: int s=1; //1
: int *p;
: *p=s ;
: char *ps=(char*) p ; //2
: printf("ps is %d ,%c", *ps, *ps); //3
: bool ps1=(bool) *ps ; //4
: 1)
: //2的值好像还是1,但是这个1好像还是int的?
: 因为//3 好像第一是1,第二个一个face形状。

1 (共1页)
进入Programming版参与讨论
相关主题
JHQ的一道指针题。multithread: how to lock a thread
c++ template中如何判断类型char s[]和char *ps的不同
int &x=y;的问题请教怎么用#define实现如下的功能
G++用-g和-O3编译运行结果竟然不一样关于 big/little endian,为什么对char 有影响?
little endian vs big endian看下这个小程序
C的问题,困惑中在帮忙看看这个吧 C: int->char*
帮忙找个错C 语言,初学者,简单问题
经典题atoi的溢出处理 (转载)const 指针类型转换
相关话题的讨论汇总
话题: int话题: ps话题: bool话题: 类型转换话题: char