首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言for迴圈版級數求和:f = 1 - 1/2! + 1/3! - ... + 1/9! 含全域變數寫法

     編輯:關於C

程式碼特色

本版本使用 for 迴圈,並將迴圈計數器 i、階乘迴圈計數器 j 宣告為全域變數。雖然能正常執行,但現代 C 語言實務不建議濫用全域變數,應優先使用區域變數。

完整程式碼(含改良建議)

#include <stdio.h>

// 不建議:全域變數
// int i, j; 

int factorial(int num);  // 函式原型宣告

int main()
{
    double f = 0;
    int flag = 1;

    // 建議:迴圈變數宣告在 for 內部,作用域最小化
    for (int i = 1; i <= 9; i++) {
        f += flag * 1.0 / factorial(i);
        flag = -flag;
    }

    printf("其結果是: %f\n", f);
    return 0;
}

int factorial(int num)
{
    int k = 1;
    // 建議:j 宣告在 for 內部
    for (int j = 1; j <= num; j++)
        k *= j;
    return k;
}

全域 vs 區域變數對比

特性全域變數區域變數
生命週期程式整個執行期間所在區塊執行期間
可見範圍整個檔案(含其他函式)宣告所在區塊內
命名衝突風險高低
除錯難度較難(任何地方可修改)較易(範圍限定)
執行緒安全不安全較安全

執行結果

其結果是: 0.632121

最佳實務總結

  1. 盡量使用區域變數,減少副作用
  2. 迴圈計數器宣告在 for(init; cond; inc) 的 init 子句中
  3. 函式間傳遞資料用參數與回傳值,避免共享全域狀態
  4. 唯獨常數(const)可考慮全域
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved