小编kev*_*nlu的帖子

67
推荐指数
6
解决办法
13万
查看次数

将uint16_t变量乘以数字会产生奇怪的结果

我有一个非常简单的C代码,给我带来了奇怪的结果.我正在为Micaz微粒开发一个简单的无线传感器网络应用程序.它似乎有ATmega128L 8位AVR微处理器.我正在使用AVR studio编写和编译代码.

uint16_t myvariable;
uint16_t myresult;
myresult = myvariable*256;
Run Code Online (Sandbox Code Playgroud)

当myvariable为3时,我发现myresult总是重置为512.只是想知道它为什么会这样工作.我的猜测是,这样一个字数256和uint16_t的混合物神奇地导致了这个问题.但我不知道为什么.有人可以对此作出详细解释吗?感谢任何帮助!

更详细的源代码如下.

static uint16_t myvariable[2];
static uint8_t AckMsg[32];
uint16_t myresult[MAX_SENDERS];

void protocol()  
{           
    if(thisnodeid != 5){   // sender nodes
      while (1)
      {         
        if(AckReceived && !MsgSent) {
          // If ACK received and a new message not sent yet,
          // send a new message on sending node.
        }

        else if(!AckReceived && MsgSent)
        {
            lib_radio_receive_timed(16, 32, AckMsg, 120);
            myvariable[0] = AckMsg[0];
            myvariable[1] = AckMsg[1];
            // Bug!!!, variable overflowed.
            myresult[thisnodeid] = 256*myvariable[1] + myvariable[0]; …
Run Code Online (Sandbox Code Playgroud)

c

5
推荐指数
1
解决办法
1001
查看次数

如何在更新MySQL数据库时避免重复?

我每天从外部服务器收到一个MySQL转储文件.sql,我没有任何控制权.我创建了一个本地数据库来存储.sql文件中的所有数据.我希望我可以设置一个脚本来自动每天更新我的本地数据库.我每天收到的sql文件包含本地数据库中的旧数据.如何避免重复此类旧数据并仅插入本地MySQL服务器的新数据?非常感谢你!

mysql database

2
推荐指数
1
解决办法
1238
查看次数

标签 统计

c ×1

database ×1

mysql ×1

python ×1

type-conversion ×1