第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將函數(shù)從 Java 轉(zhuǎn)換為 C?

如何將函數(shù)從 Java 轉(zhuǎn)換為 C?

侃侃爾雅 2022-10-07 16:26:11
我們被要求用 Java 構(gòu)建一個隨機字母庫。我做了功課。我們現(xiàn)在被要求用 C 語言編寫。我用 Java 中的 nanotime 做到了。我做了一些研究,但我在 C 中找不到納米時間。已經(jīng)在 C 中嘗試過:(它沒有用)Random SayiOlustur(){Random this;this = (Random) malloc(sizeof(struct RANDOM));char randomly;int i;struct timeval before , after;gettimeofday(&before , NULL);for (i=1 ; i <= 100 ; i++){   printf("%d %d %d ",i, i*i, i*i*i);}gettimeofday(&after , NULL);printf("%d",Nano(before,after)); int random;double test;while(true){    test = Nano(before,after);    random = (int)test % (int)123.0;    if((random >= 65 && random <= 90) || (random >= 97 && random <= 122)){    randomly = (char) random;    break;    }}}int Nano(struct timeval x,struct timeval y){    double x_ms , y_ms , diff;    x_ms = (double)x.tv_sec*1000000 + (double)x.tv_usec;    y_ms = (double)y.tv_sec*1000000 + (double)y.tv_usec;    diff = (double)y_ms - (double)x_ms;    return diff;}Java代碼:(工作) private long Now(){        long now = System.nanoTime();        return now; }public char Random(){        char rastgele;        while(true){            random = (int)((Now())%123);            // ASCI            if((random >= 65 && random <= 90) || (random >= 97 && random <= 122))                break;        }        rastgele = (char) random;        return rastgele;    }public static void main(String[] args) {        RastgeleKarakter rastgele = new RastgeleKarakter();        System.out.println("Rastgele Karakter: " + rastgele.Random());}出去:run:Rastgele Karakter: m \\ Random出去:runRastgele Karakter: y \\ Random
查看完整描述

1 回答

?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

您正在尋找的 Unix 系統(tǒng)調(diào)用是 clock_gettime() ,它將為您提供納秒時間。

也就是說,即使您沒有問,我也會對您的 C 代碼提供一些評論:您最好嘗試從頭開始編寫代碼,而不是移植 Java 代碼。你的系統(tǒng)可能會提供 random() 調(diào)用,它會給你一個比你的方法更干凈的隨機數(shù)。此外,您永遠不應(yīng)該從 malloc() 轉(zhuǎn)換返回值:它返回 void *。如果可以避免的話,永遠不要使用它——這是一個非常糟糕的習慣,最終只會對你隱藏錯誤。同樣,不要將 y_ms 和 x_ms 轉(zhuǎn)換為雙精度——您將它們聲明為雙精度。當您更改 y_ms 和 x_ms 的聲明并忘記更改演員表時,該演員表只會傷害您。

您在 Nano() 之前和之后傳遞,這很糟糕。這些是結(jié)構(gòu),因此您將結(jié)構(gòu)中的所有數(shù)據(jù)復(fù)制到堆棧中。將指針傳遞給結(jié)構(gòu)要好得多,因此您只需編寫一個指針。


查看完整回答
反對 回復(fù) 2022-10-07
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號