| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 729 人关注过本帖
标题:模板没用 为什么
只看楼主 加入收藏
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
结帖率:80%
收藏
 问题点数:0 回复次数:7 
模板没用 为什么
明明强制转换为char型了 可是还是按int型算

#include<stdio.h>

template<typename T>
void two(T x);

int main()
{    
    two((char)1);//为什么没用
    getchar();
    return 0;
}

template<typename T>
void two(T x)
{
    int static n=sizeof(T)*8-1;//按理说T应该是char型 n为7 输出8位为才对
    if(n--)two(x>>1);
    if(x&1)printf("1");
    else printf("0");
}
搜索更多相关主题的帖子: 模板 
2008-10-16 20:21
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
函数里面的你转了吗?

樱花大战,  有爱.
2008-10-16 21:07
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
T 不是代表char型吗

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2008-10-16 21:11
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
if(n--)two((char)(x>>1));  1是内建的int...你用char和它右移...char的类型会跃迁变成int.

[[it] 本帖最后由 中学者 于 2008-10-16 21:24 编辑 [/it]]

樱花大战,  有爱.
2008-10-16 21:14
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
谢谢楼上的结果对了

template<typename T>
void two(T x)
{
    int static n=sizeof(T)*8-1;//按理说T应该是char型 n为7 输出8位为才对
    if(n--)two((T)(x>>1));
    if(x&1)printf("1");
    else printf("0");
}

不过还是想不通
n的定义 int static n=sizeof(T)*8-1 应该只执行一次才对
难道说T的类型改变 n的定义还要重新执行一次

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2008-10-16 21:41
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
这里生成了两个版本嘛..char和int的

樱花大战,  有爱.
2008-10-16 21:44
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
谢谢 中学者
明白了 生成了两个不同的函数

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2008-10-16 21:58
wyy123_2008
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-10-15
收藏
得分:0 
我本来还想说几句,看来有人比我高明,还是算了
2008-10-16 23:00
快速回复:模板没用 为什么
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039043 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved