---
# System prepended metadata

title: from C to JavaScript

---

# from C to JavaScript
### C and JS相同之處
**1.switch 寫法與c相似**
switch(x){ 
    case 1: //同樣用case 選擇
        break; //需要利用break跳離
    case 2:
        break;
    default:
        break;}
**2.for 或 while迴圈寫法也相似**
for(i=0;i<10;i++){
    console.log(i);
}
var i=0;
while(i<10){
    console.log(i);
    i++;
}//兩種迴圈的基本架構都相同

**3.強制轉型的方式一樣**
**但強制轉型不能由string轉int或int轉string再做運算**
C：
int a,c;
float b,d;
a=5;
b=12.3;
c=b+(int)b; //結果會是17，C即JS的浮點數轉整數均為無條件捨去
d=(float)c+b; //結果會是17.3

JS：
var a=5;
var b=12.3
var c=""

**4.C和JS在邏輯運算符和值的比較部分相同**
C：
if(2>1){
    return true;
}
||和&&的用法也是一樣的or跟and，依照運算邏輯



JS：
console.log(2>1); //true
console.log(2==1); //false
console.log(2!=1); //true

console.log(true||false); //true
console.log(true&&false); //false

### C and JS相異之處

**1.宣告變數型態不同**
C：
變數型態+變數名稱
int 整數
float 浮點數
double 浮點數 (儲存記憶體較大)
char 字符
...

JS：
var+變數名稱
var s;
並將想要賦予的**值**或**字串**賦予給變數，跟C比較沒有差異
s="str";
var x = 5;

**2.輸出寫法也不太一樣**
C：
int x=5;
float y=1.7;
char z=!;
printf("%d",x);//%d輸出整數型態
printf("%f",y);//%f輸出浮點數型態
printf("%c",z);//%c輸出字符型態
C需要根據想輸出的變數型態寫在輸出欄寫"%d" "%f"等等，後面接,x 此為所對應想輸出的變數

JS：
var x=5;
var y=5.3;
var z="str";
console.log(x);
console.log(y);
console.log(z);
JS只需要打指令console.log(); 並且在括號內放入想輸出的變數，即可輸出相對應的值

**3.建立function不太一樣**
C：
int gcd(int c,int d){//宣告變數型態，function名稱，以及變數內容
    int x;//最大公因數 
    if(d==0){
        x=c;
        return x;}
    if(d!=0){
        gcd(d,c%d);}}


JS：
function sum(a,b){//宣告function，function名稱，以及變數內容
    return (a+b);
}

且JS的function有類似C struct的用法
可自創function設一個名字
var s = function sayHi(){
    console.log("Hi");
}
當需要呼叫此function只到打
s(); 即可


 4.JS可以將**不同型態**的變數座相加相減或是做值得比較
JS：
var b = true - 5;//true在布林表示當1
console.log(b);
console.log(0\==false);//\==指判斷值是否一樣，不在乎資料型態
console.log(0===false);//===為嚴格相等，除了數值一樣之外，還必須要是相同的型態

**5.JS 允許數值資料與字串相加，結果變成一個字串。**
(這是C做不到的事情 除了用陣列可以達到類似的效果)

JS：
var xx = 2+"3"+4+8;//只會轉換一次字符，因為是二元運算，故只要做到第一次字符轉換後面就都是字符
console.log(xx);//2348

var s = 1 + (2 + "a");//2+a會先做 且系統會將2轉為字串與a相加，再去把1改為字串並做相加，故輸出為12a
var s1 = 1 + 2 + "a";//1+2會先做 且系統會將1+2的結果轉為字串再去跟a相加，故輸出為3a
var s2 = "a" + 1 + 2;//a+1會先做 且系統會將1轉為字串先與a相加，再去把2改為字串並做相加，故輸出為a12

**6.JS在運算子有些與C不相同**

JS:
console.log(2\**10);//2的10次方
在C裡沒有利用\**代表次方計算




