Я пытаюсь работать с c-программой в своем разделе в Mac и, как выяснилось, большую часть способов сделать это, но не могу понять очень простую проблему.Умножение двух имен переменных на mac os
так у меня есть .h файл, в котором я декларировать все свои переменные и в моем .c файл я пытаюсь выполнить команду как
L2toL1 = (L2_transfer_time)*(L1_block_size);
Однако я никогда не получить правильный ответ. Я печатаю переменные перед строкой выше, и они печатаются правильно, но ответ, когда они умножаются вместе, выключен. Итак, как я могу выполнить правильное умножение?
заголовочный файл выглядит
#define CONFIG_PARAM 16
#define HIT 1
#define MISS 0
#define TRUE 1
#define FALSE 0
unsigned long long L2=0;
unsigned long long L1=0;
int L1_block_size=0;
int L1_cache_size=0;
int L1_assoc=0;
int L1_hit_time=0;
int L1_miss_time=0;
int L2_block_size=0;
int L2_cache_size=0;
int L2_assoc=0;
int L2_hit_time=0;
extern int L2_miss_time=0;
int L2_transfer_time=0;
int L2_bus_width=0;
int mem_sendaddr=0;
int mem_ready=0;
int mem_chunktime=0;
int mem_chunksize=0;
unsigned long long test;
Файл .c затем работает следующий и читает в конкретных значениях из конфигурационного файла Ответа на печать ф заявление должно быть 195, но его, как 49567
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "definitions.h"
int main(int argc, char *argv[]) {
FILE *config_file, *trace;
unsigned int address, exec_info;
char check, trash[25], op;
int j, para;
int i=0;
if(argc >= 2)
config_file = fopen(argv[1],"r");
else
config_file = fopen("config0.txt","r");
// Grabs desired cache parameters from the specified config files
while(fscanf(config_file,"%s %d\n",trash,¶) == 2) {
config[i] = para;
i++;
}
// Close the config file
fclose(config_file);
// Puts Cache parameters from config file in desired variables
InitializeParameters();
/*
unsigned long long L2toL1;
L2toL1 = (L2_miss_time)*(L1_block_size);
printf("L2toL1 is: %Lu\n",L2toL1);
}
int InitializeParameters() {
L1_cache_size = config[0];
L1_block_size = config[1];
L1_assoc = config[2];
L1_hit_time = config[3];
L1_miss_time = config[4];
L2_block_size = config[5];
L2_cache_size = config[6];
L2_assoc = config[7];
L2_hit_time = config[8];
L2_miss_time = config[9];
L2_transfer_time = config[10];
L2_bus_width = config[11];
mem_sendaddr=config[12];
mem_ready=config[13];
mem_chunktime=config[14];
mem_chunksize=config[15];
}
Спасибо за помощь
Какие входные данные ?; и какие результаты вы получаете? –
Просьба показать полный пример (включая полные определения всех переменных, операторов печати и используемых вами значений). –
Каковы значения? Вы уверены, что переполнение не происходит? – Spidey