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

新手求帮忙,大虾帮改下

BlizzardKen 发布于 2011-05-02 20:14, 466 次点击
#include "stdafx.h"
#include<iostream>
using namespace std;
void print_teacher();
void print_student();
void print_body(void(*pFuc)());

int main(int argc, char* argv[])
{
    void(*print_message)();
    int nChoose=0;
    cout<<"选择 1 老师 2学生:"<<endl;
    cin>>nChoose;
    if(nChoose==1)print_message=print_teacher;
        else if(nChoose=2)print_message=print_student;
        else {cout<<"选择错误."<<endl;exit(1);};
            print_body(print_message);
            return 0;
};
void print_teacher()
{
    cout<<"老师姓名:李冰"<<endl;
    cout<<"所教课程:  C++"<<endl;
};
void print_student()
{
    cout<<"学生名称:张伟"<<endl;
    cout<<"所学课程:C++"<<endl;
};
void print_body(void(*pFuc)())
{
    pFuc();   
}
我输入的是除了1、2之外的数字显示的还是:            学生名称:张伟
                                                                                    所学课程:C++
为什么这句话“else {cout<<"选择错误."<<endl;exit(1);};”的作用没有表达出来呢?

[ 本帖最后由 BlizzardKen 于 2011-5-2 21:08 编辑 ]
7 回复
#2
hellovfp2011-05-03 11:19
if(nChoose=2 )你觉得这句是否正确?
#3
BlizzardKen2011-05-03 15:04
回复 2楼 hellovfp
这句有什么问题么,新手来着
#4
seven392011-05-03 15:45
else if(nChoose==2)print_message=print_student;改成这个。一个=是赋值的意思,两个==是判断是否相等
#5
Pirelo2011-05-03 16:23
faint!
建议楼主以后写if条件表达式这样写:
if(2==nChoose),把常量发在左边吧,
否则if(nChoose=2),少写一个"="后成为赋值表达式,编译和运行都检查不出错误。
#6
BlizzardKen2011-05-03 16:31
回复 4楼 seven39
原来是这个问题,知道了。谢谢
#7
BlizzardKen2011-05-03 16:31
回复 5楼 Pirelo
谢谢
#8
pangding2011-05-03 18:56
现在很多编译器,在希望出现条件语句的地方出现赋值语句会给警告。就是为了避免这种情况。

有人推荐 2 == x 这种写法。也有人觉得这么写比较难看,而且不符合人的常规逻辑习惯。反正不管怎样,这种问题要想办法避免。
1