亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: C程序中,如何測試一個變量為何種數(shù)據(jù)類型。 [打印本頁]

作者: RobinsonNie    時間: 2008-07-05 11:56
標題: C程序中,如何測試一個變量為何種數(shù)據(jù)類型。
如題。
謝過。
作者: 77h2_eleven    時間: 2008-07-05 12:01
我只知道一種方法:
用gdb調(diào)試的時候可以whatis var_name。就會顯示變量類型
作者: prolj    時間: 2008-07-05 12:02
標題: 回復 #2 77h2_eleven 的帖子
給出是無符號還是有符號的信息嗎?
作者: RobinsonNie    時間: 2008-07-05 12:03
原帖由 77h2_eleven 于 2008-7-5 12:01 發(fā)表
我只知道一種方法:
用gdb調(diào)試的時候可以whatis var_name。就會顯示變量類型



編譯時或運行時均可。
作者: RobinsonNie    時間: 2008-07-05 12:04
原帖由 prolj 于 2008-7-5 12:02 發(fā)表
給出是無符號還是有符號的信息嗎?


貼段代碼看看,謝謝啦。
作者: prolj    時間: 2008-07-05 12:06
標題: 回復 #5 RobinsonNie 的帖子
ft,我問他可以嗎?我也不知道。
如果是IA32的機器也不能用長度來判斷,因為int和long都是4個字節(jié)。我是進來學習的。
作者: MMMIX    時間: 2008-07-05 12:07
原帖由 RobinsonNie 于 2008-7-5 11:56 發(fā)表
如題。
謝過。

You just can't.
作者: MMMIX    時間: 2008-07-05 12:10
原帖由 RobinsonNie 于 2008-7-5 12:03 發(fā)表



編譯時或運行時均可。

You can get variable's type use gcc extension typeof in compile-time; in run-time, you just can't get this information(AFAIK).
作者: 77h2_eleven    時間: 2008-07-05 12:11
原帖由 prolj 于 2008-7-5 12:02 發(fā)表
給出是無符號還是有符號的信息嗎?


這個是gdb的示例:
(gdb) whatis a
type = int
(gdb) whatis b
type = long int
(gdb) whatis u
type = unsigned int
(gdb)

代碼如下:

  1.       1 int main(void)
  2.       2 {
  3.       3     int a = 0;
  4.       4     long b = 0;
  5.       5     unsigned int u = 0;
  6.       6 }
復制代碼

作者: prolj    時間: 2008-07-05 12:12
標題: 回復 #9 77h2_eleven 的帖子
謝謝,看來有希望了。
作者: RobinsonNie    時間: 2008-07-05 12:57
標題: 回復 #8 MMMIX 的帖子
Thanks!!!
作者: blizzard213    時間: 2008-07-05 23:48
標題: 回復 #11 RobinsonNie 的帖子
c++可以 boost庫里有
作者: cugb_cat    時間: 2008-07-05 23:58
gcc 的 typeof
作者: flw    時間: 2008-07-06 02:14
居然沒人提到我的簽名,真失敗。
廣告一下。
作者: c/unix    時間: 2008-07-06 03:12
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: blizzard213    時間: 2008-07-06 03:27
原帖由 c/unix 于 2008-7-6 03:15 發(fā)表



Hi,I don't think your en is some,you know authentic...maybe disgusting

So do not show it anymore. You can make it ,right?


學習中
學到一個新慣用法 i don't think xxx is some就是不咋的意思吧
但是authentic在此處是什么意思呢?
可信的?
還請賜教
作者: zhujiang73    時間: 2008-07-07 14:20
原帖由 zhujiang73 于 2008-7-6 11:01 發(fā)表


      在襪子上裝個無線電信標不就行了。  只是 C 不支持 RTTI  ,自己實現(xiàn)比較麻煩。


#include <stdio.h>

/*
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通常情況下程序員應該記得哪個變量是什么類型。但是在有些特殊情況下運行時類型信息獲取是有必要的。
比如要用通用函數(shù)做數(shù)據(jù)的打包和解包,函數(shù)接受基類型的指針作參數(shù)卻要完成對派生類型的打包和解包,這時
就需要運行時類型信息獲取。雖然 C 不直接支持,但是我們可以手工在 “襪子” 上貼個標簽,以便隨時追蹤它。 :-)
&nbsp;&nbsp;

*/


typedef struct
{  
&nbsp;&nbsp;&nbsp;&nbsp;char  class_name[2];
&nbsp;&nbsp;&nbsp;&nbsp;int   class_size;
} Base;

typedef struct
{  
&nbsp;&nbsp;&nbsp;&nbsp;Base  parent;
&nbsp;&nbsp;&nbsp;&nbsp;int   ma;
} A;

typedef struct
{
&nbsp;&nbsp;&nbsp;&nbsp;Base  parent;
&nbsp;&nbsp;&nbsp;&nbsp;int   mb;
&nbsp;&nbsp;&nbsp;&nbsp;char  text[20];
} B;

A_init(void *this)
{
&nbsp;&nbsp;&nbsp;&nbsp;Base  *pp;
&nbsp;&nbsp;&nbsp;&nbsp;pp = (Base*)this;
&nbsp;&nbsp;&nbsp;&nbsp;pp->class_name[0] = 'A';
&nbsp;&nbsp;&nbsp;&nbsp;pp->class_name[1] = '\0';
&nbsp;&nbsp;&nbsp;&nbsp;pp->class_size = sizeof(A);
}

B_init(void *this)
{
&nbsp;&nbsp;&nbsp;&nbsp;Base  *pp;
&nbsp;&nbsp;&nbsp;&nbsp;pp = (Base*)this;
&nbsp;&nbsp;&nbsp;&nbsp;pp->class_name[0] = 'B';
&nbsp;&nbsp;&nbsp;&nbsp;pp->class_name[1] = '\0';
&nbsp;&nbsp;&nbsp;&nbsp;pp->class_size = sizeof(B);
}

int main (int argc, char *argv[])
{
&nbsp;&nbsp;&nbsp;&nbsp;A      a, *pa;
&nbsp;&nbsp;&nbsp;&nbsp;B      b, *pb;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;Base   *pbase;   

&nbsp;&nbsp;&nbsp;&nbsp;pa = &a;
&nbsp;&nbsp;&nbsp;&nbsp;pb = &b;

&nbsp;&nbsp;&nbsp;&nbsp;A_init((void*)pa);
&nbsp;&nbsp;&nbsp;&nbsp;B_init((void*)pb);
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;pbase = (Base*)pa;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf("%s size = %d  ", pbase->class_name, pbase->class_size);

&nbsp;&nbsp;&nbsp;&nbsp;pbase = (Base*)pb;

&nbsp;&nbsp;&nbsp;&nbsp;printf("%s size = %d  \n", pbase->class_name, pbase->class_size);

&nbsp;&nbsp;&nbsp;&nbsp;printf("A size = %d  B size = %d \n",  sizeof(a), sizeof(b));

&nbsp;&nbsp;&nbsp;&nbsp;return  0;
}


作者: wangsheng0415    時間: 2008-07-07 14:24
#include <typeinfo>
作者: aero    時間: 2008-07-07 16:51
原帖由 RobinsonNie 于 2008-7-5 11:56 發(fā)表
如題。
謝過。


為什么有這種需求,謝謝。

flw會問你昨晚他襪子放哪里了。
作者: aero    時間: 2008-07-07 16:52
原帖由 flw 于 2008-7-6 02:14 發(fā)表
居然沒人提到我的簽名,真失敗。
廣告一下。


我靠,我來晚了。
作者: Godbach    時間: 2008-07-07 17:06
原帖由 flw 于 2008-7-6 02:14 發(fā)表
居然沒人提到我的簽名,真失敗。
廣告一下。



呵呵,偶一看這個題目,就想到flw的簽名了。
作者: flw    時間: 2008-07-07 17:15
給襪子上貼個標簽這個比方不生動。
應該說,脫襪子時給每只襪子里塞一只手機。
作者: zhujiang73    時間: 2008-07-07 19:26
原帖由 flw 于 2008-7-7 17:15 發(fā)表
給襪子上貼個標簽這個比方不生動。
應該說,脫襪子時給每只襪子里塞一只手機。


       帖個無線電信標,具有手機的部分功能,但是體積很小帖著方便。    有的語言支持 RTTI  ,不過需要編譯器/解釋器暗中做一些工作。我認為編譯器暗中做工作不是 C 的風格,但 C++ 對 RTTI 的支持應該加強。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2