我試圖在 ac 函式中添加兩個二進制數,但我無法得到我正在尋找的結果。
#include <string.h>
#include <stdio.h>
char * sadd(char bn1[], char bn2[], char s[]){ //Function to add the binary numbers
int i;
int co = 0;
int num = 0;
for(i = 15; i>0; i ){
num = (int)bn1[i] (int)bn2[i] co;
co = 0;
if(num == 2){
co = 1;
s[i] = '0';
}
else{
s[i] = (char)num;
}
}
return s;
}
uj5u.com熱心網友回復:
這個for回圈
for(i = 15; i>0; i ){
是不正確的。不是減少變數 i 而是增加。看來你的意思
for(i = 15; i>=0; i--){
這個說法
num = (int)bn1[i] (int)bn2[i] co;
應該像這樣重寫
num = bn1[i] - '0' bn2[i] - '0' co;
而這個說法
s[i] = (char)num;
應該像這樣重寫
s[i] = num '0';
當 co 等于 1 并且 bn[i] 和 bn2[i] 都等于 '1' 時,您沒有處理 num 等于 tp 3 的情況。
而不是這個 if 陳述句
co = 0;
if(num == 2){
co = 1;
s[i] = '0';
}
else{
s[i] = (char)num;
}
你可以寫
s[i] = num % 2 '0';
cp = num / 2;
uj5u.com熱心網友回復:
@VladFromMoscow 提供了一個耐心而有效的答案。但是 - 如果您要使用除錯器逐步運行您的程式,您可以自己解決這個問題。
以下是關于在 Linux 和 Windows 上除錯的兩個 Stackoverflow 問題:
- 如何除錯 C 程式
- 如何在 Windows 上除錯 C 程式?
如果您要除錯程式,單步執行各個命令,您會注意到:
- 回圈運行超過 15 次迭代,并且
j不斷增加。 - num 的值很少介于
0和之間3。
然后您可能會想到為什么會發生這種情況,并得出與弗拉德的回答相同的結論。
此外,為了將來參考 - 大多數 StackOverflow 用戶希望提問者執行他們的“盡職調查”,在向我們尋求解決方案之前做出合理的努力來找出他們的問題。既然您了解了除錯器 - 請在詢問“為什么我的程式沒有按照我的預期執行”之前使用除錯器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/442964.html
