日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C/C++中switch用法的一种替换方式

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++中switch用法的一种替换方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在C/C++中,switch語句是經常被用到的,當switch內的case語句較多時程序有時顯得比較繁亂,此種情況下可以用另外一種實現方式替代switch。詳細用法見例子:

#include "stdafx.h"float AddFunc(float a, float b)
{return (a + b);
}float SubFunc(float a, float b)
{return (a - b);
}float MultiplyFunc(float a, float b)
{return (a * b);
}float DivisionFunc(float a, float b)
{return (a / b);
}void Fun1(float a, float b, int flag, float &result)
{switch (flag){case 0:result = AddFunc(a, b);break;case 1:result = SubFunc(a, b);break;case 2:result = MultiplyFunc(a, b);break;case 3:result = DivisionFunc(a, b);break;}
}//若函數無參數,且返回值為空,則應該這樣定義:
//typedef void (*BasicOperationsFunc)();
typedef float (*BasicOperationsFunc)(float a, float b);
BasicOperationsFunc g_BasicOperationsFunc[] = {&AddFunc,&SubFunc,&MultiplyFunc,&DivisionFunc
};void Fun2(float a, float b, int flag, float &result)
{BasicOperationsFunc  basicOperationFunc = g_BasicOperationsFunc[flag];if (!basicOperationFunc) return;result = basicOperationFunc(a, b);
}int _tmain(int argc, _TCHAR* argv[])
{float a = 10, b = 2;float result1 = 0, result2 = 0;int flag = 1;Fun1(a, b, flag, result1);Fun2(a, b, flag, result2);return 0;
}

首先聲明一個BasicOperationsFunc,然后定義一個BasicOperationsFunc類型的數組,這樣在Fun2函數中就可以不用switch,而直接通過basicOperationFunc來調用相應的函數即可。如果在case條件比較多的情況下,這是一種不錯的替代方法。

還有其它推薦的方法嗎?

總結

以上是生活随笔為你收集整理的C/C++中switch用法的一种替换方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:C/C++中switch用法的一种替换方式