您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關十六進制與RGB顏色值的相互轉換以及如何判斷一個素數 和內聯函數及面向對象,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
/**
* 隨機生成顏色
* @return 隨機生成的十六進制顏色
*/
function randomColor(){
var colorStr=Math.floor(Math.random()*0xFFFFFF).toString(16).toUpperCase();
return "#"+"000000".substring(0,6-colorStr)+colorStr;
}
/**
* 十六進制顏色轉換為RGB顏色
* @param color 要轉換的十六進制顏色
* @return RGB顏色
*/
function colorHexToRGB(color){
color=color.toUpperCase();
var regexpHex=/^#[0-9a-fA-F]{3,6}$/;//Hex
if(regexpHex.test(color)){
var hexArray=new Array();
var count=1;
for(var i=1;i<=3;i++){
if(color.length-2*i>3-i){
hexArray.push(Number("0x"+color.substring(count,count+2)));
count+=2;
}else{
hexArray.push(Number("0x"+color.charAt(count)+color.charAt(count)));
count+=1;
}
}
return "RGB("+hexArray.join(",")+")";
}else{
return color;
}
}
/**
* RGB顏色轉換為十六進制顏色
* @param color 要轉換的RGB顏色
* @return 十六進制顏色
*/
function colorRGBToHex(color){
var regexpRGB=/^(rgb|RGB)\([0-9]{1,3},\s?[0-9]{1,3},\s?[0-9]{1,3}\)$/;//RGB
if(regexpRGB.test(color)){
color=color.replace(/(\(|\)|rgb|RGB)*/g,"").split(",");
var colorHex="#";
for(var i=0;i<color.length;i++){
var hex=Number(color[i]).toString(16);
if(hex.length==1) hex="0"+hex;
colorHex+=hex;
}
return colorHex;
}else{
return color;
}
}
笨蛋的作法:
bool IsPrime(unsigned n)
{
if (n<2)
{ //小于2的數即不是合數也不是素數
throw 0;
}
for (unsigned i=2;i<n;++i)
{ //和比它小的所有的數相除,如果都除不盡,證明素數
if (n%i==0)
{//除盡了,則是合數
return false;
}
}
return true;
}
內聯函數
內聯函數是代碼被插入到調用者代碼處的函數。如同 #define 宏,內聯函數通過避免被調用的開銷來提高執行效率,尤其是它能夠通過調用(“過程化集成”)被編譯器優化。
內聯函數和宏很類似,而區別在于,宏是由預處理器對宏進行替代,而內聯函數是通過編譯器控制來實現的。而且內聯函數是真正的函數,只是在需要用到的時候,內聯函數像宏一樣的展開,所以取消了函數的參數壓棧,減少了調用的開銷。你可以象調用函數一樣來調用內聯函數,而不必擔心會產生于處理宏的一些問題。
聲明內聯函數看上去和普通函數非常相似:
void f(int i, char c);
當你定義一個內聯函數時,在函數定義前加上 inline 關鍵字,并且將定義放入頭文件:
inline
void f(int i, char c)
{
// ...
}
任何在類的說明部分定義的函數都會被自動的認為是內聯函數。
內聯函數必須是和函數體申明在一起,才有效。像這樣的申明Inline Tablefunction(int I)是沒有效果的,編譯器只是把函數作為普通的函數申明,我們必須定義函數體。
Inline tablefunction(int I) {return I*I};
這樣我們才算定義了一個內聯函數。我們可以把它作為一般的函數一樣調用。但是執行速度確比一般函數的執行速度要快。
我們也可以將定義在類的外部的函數定義為內聯函數,比如:
Class TableClass{
Private:
Int I,j;
Public:
Int add() { return I+j;};
Inline int dec() { return I-j;}
Int GetNum();
}
inline int tableclass::GetNum(){
return I;
}
上面申明的三個函數都是內聯函數。在C++中,在類的內部定義了函數體的函數,被默認為是內聯函數。而不管你是否有inline關鍵字。
內聯函數在C++類中,應用最廣的,應該是用來定義存取函數。我們定義的類中一般會把數據成員定義成私有的或者保護的,這樣,外界就不能直接讀寫我們類成員的數據了。對于私有或者保護成員的讀寫就必須使用成員接口函數來進行。如果我們把這些讀寫成員函數定義成內聯函數的話,將會獲得比較好的效率。
Class sample{
Private:
Int nTest;
Public:
Int readtest(){ return nTest;}
Void settest(int I) {nTest=I;}
}
面向對象
看完上述內容,你們對十六進制與RGB顏色值的相互轉換以及如何判斷一個素數 和內聯函數及面向對象有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。