小编17T*_*nty的帖子

链接Bool值给出了预期的相反结果

我不假思索地编写了一些代码来检查结构的所有值是否都设置为0.为了实现这一点,我使用了:

bool IsValid() {
    return !(0 == year == month == day == hour == minute == second);
}
Run Code Online (Sandbox Code Playgroud)

其中所有struct成员都是unsigned short类型.我使用代码作为更大测试的一部分,但注意到它对于不等于零的值返回false,对于全部等于零的值则返回true - 与我预期的相反.

我将代码更改为:

bool IsValid() {
    return (0 != year) || (0 != month) || (0 != day) || (0 != hour) || (0 != minute) || (0 != second);
}
Run Code Online (Sandbox Code Playgroud)

但是想知道是什么导致了奇怪的行为.这是优先的结果吗?我试过谷歌这个答案,但没有发现任何东西,如果有任何术语来描述我想知道它的结果.

我使用VS9和VS8编译了代码.

c c++ compiler-construction boolean operator-precedence

15
推荐指数
3
解决办法
2410
查看次数

Windows 7中的UDP广播 - 它有效吗?

我正在尝试在Windows 7下编写一些代码,以便通过我的本地网络进行广播,并且无法使用以下代码.我来自Linux背景,所以道歉 - 完整的代码编译等工作,如果我使用的地址:

unsigned long broadcastAddr = inet_addr("192.168.10.0") | ~(inet_addr("255.255.240.0"));
Run Code Online (Sandbox Code Playgroud)

然后工作正常,我只是想使用首选的INADDR_BROADCAST/255.255.255.255方法.

<snip>
SOCKET sockfd;
int broadcast = 1;

WSADATA wsaData;    // Windows socket

// Initialize Winsock
if (WSAStartup(MAKEWORD(2,2), &wsaData) == SOCKET_ERROR) {
    perror("WinSock Error");
    getc(stdin);
    exit(EXIT_FAILURE);
}
if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
    perror("Socket Error");
    getc(stdin);
        exit(1);
}

if ((setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, (char *)&broadcast, sizeof(broadcast))) == SOCKET_ERROR) {
    perror("Setsockopt - SOL_SOCKET");
    getc(stdin);
    exit(1);
}

struct sockaddr_in recvaddr;
recvaddr.sin_family = AF_INET;
recvaddr.sin_port = htons(PORT);
recvaddr.sin_addr.s_addr = htonl(INADDR_BROADCAST); …
Run Code Online (Sandbox Code Playgroud)

c udp network-programming

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

解组到接口类型

我有一些代码被丢弃了,实际上我很难过 - 我以前使用过 RPC 和 JSON 方面的东西,但是当它在本地工作正常时,我似乎无法让它在 RPC 上工作。

package main

import (
    "log"
    "net"
    "net/rpc"
    "net/rpc/jsonrpc"
    "reflect"
)

type Foo interface {
    SayHello() error
}

type fakeFoo struct {
    internalValue string
}

func NewFakeFoo() *fakeFoo {
    f := &fakeFoo{}
    f.internalValue = "123456789012347"
    return f
}

func (m *fakeFoo) SayHello() error {
    return nil
}

type FooManager struct {
    availableFoos []Foo
}

func NewFooManager() *FooManager {
    p := new(FooManager)
    p.availableFoos = make([]Foo, 0)
    return p
}

func AddFoo(mm *FooManager, m …
Run Code Online (Sandbox Code Playgroud)

rpc marshalling json-rpc go

4
推荐指数
1
解决办法
1998
查看次数