2017-04-12 67 views
-2

IM编码器CodeVision计算器和我得到这个错误:一个ERR在器CodeVision AVR

Error: C:\cvavr\BIN\Thrust Calculator\TC.c(112): ')' expected

这个错误涉及到我的这部分代码(从BOT 4号线):

intnum1 = (int atoi(num1[q])) * 10^(i-q-1) + intnum1; 

是什么问题?

这是我的代码:

#include <mega32.h> 
#include <alcd.h> 
#include <delay.h> 
#include <string.h> 



//defining PTND.i 
#define C0 PIND.4 
#define C1 PIND.5 
#define C2 PIND.6 
#define C3 PIND.7 



flash char shift[4] = {0b11111110,0b11111101,0b11111011,0b11110111}; 
flash char layout[16] = {'7','8','9','/', 
         '4','5','6','*', 
         '1','2','3','-', 
         'C','0','=','+'}; 


    char keypad(void); 
    int fnum1(void); 
    char num1[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
    char num2[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
    int i,q, intnum1 = 0; 
    int t; 


void main(void)  
{ 

    DDRD = 0X0F; 
    PORTD = 0XF0; 
    lcd_init(16); 
    keypad(); 

while (1) 
     { 


     } 
} 


/* keypad function */ 

char keypad(void) 
{  
int row = 0, position = 0; 

    while (1) 
    { 
    for(row=0; row<4; row++) 
     { 
     int COLUMN = -1; 

     PORTD = shift[row]; 

     //finding column 
     if(C0 == 0) {COLUMN = 0;} 
     if(C1 == 0) {COLUMN = 1;} 
     if(C2 == 0) {COLUMN = 2;} 
     if(C3 == 0) {COLUMN = 3;} 

     //know if sm clik the btn 
     if(COLUMN != -1) 
     {    

      //calculating the position 
      position = row*4 + COLUMN; 

      //do nothing during the pushing 
      while(C0 == 0) {} 
      while(C1 == 0) {} 
      while(C2 == 0) {} 
      while(C3 == 0) {} 

      //C as lcd clear   
      if(layout[position] == 'C') lcd_clear(); 
     else 

      //return the keypad value 
      return layout[position]; 
     }   
     delay_ms(50); 
     } 
    }    
} 


int fnum1(void) 
{ 

     if(keypad() != '') 
      { 
      num1[i] = keypad(); 
      i = i + 1; 
      }  

     if (keypad() == '=') 
      { 
      for(t = 0 ; t <= i ; t++) 
      { 
      lcd_putchar(num1[t]); 
      } 
      } 

     for(q = 0 ; q <= i ; q++) 
      { 
      intnum1 = (int atoi(num1[q])) * 10^(i-q-1) + intnum1; 
      } 
      lcd_putchar(keypad()); 
      return intnum1;  

} 

,我会很感激,如果SM能回答我:)

回答

0

intnum1 = (int atoi(num1[q])) * 10^(i-q-1) + intnum1;确实是问题。

你究竟想在这里做什么?如果你想整个结果强制转换为int,因为它出现,那么你想要的东西是这样的:

intnum1 = (int) (atoi(num1[q])) * (10^(i-q-1))) + intnum1; 

我不知道这里需要什么样的操作顺序,但你要投的整个结果为int将其存储在intnum1

+0

是的,例如你有这个字符:'563'。 我把它分成3个数字:500 + 60 + 3。 –

+0

我写了你说的,但它说“未定义的符号atoi”为这个错误:错误:C:\ cvavr \ BIN \ Thrust Calculator \ TC.c(116):undefined symbol'atoi' –

+0

'atoi'是一个数学库函数 - 您必须包含正确的头文件,以便链接器可以找到该函数并将其添加到可执行代码中。 的#include 一般而言,任何未定义功能是丢失的头,或者如果它是在自己的代码,你可以声明为“的extern” –