小编Ant*_*ala的帖子

为什么没有初始化而不是越界?

在下面的代码中为什么b[9]未初始化而不是越界?

#include <stdio.h>

int main(void)
{
    char b[] = {'N', 'i', 'c', 'e', ' ', 'y', 'o', 'u', '!'};
    printf("b[9] = %d\n", b[9]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器调用:

% gcc -O2 -W -Wall -pedantic -c foo.c
foo.c: In function ‘main’:
foo.c:6:5: warning: ‘b[9]’ is used uninitialized in this function [-Wuninitialized]
     printf("b[9] = %d\n", b[9]);
% gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.6) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. …
Run Code Online (Sandbox Code Playgroud)

c gcc gcc-warning

45
推荐指数
2
解决办法
2241
查看次数

Jackson @JsonProperty(required = true)不会抛出异常

我正在使用jackson 2.2注释@JsonProperty,必需的设置为true.通过ObjectMapper readValue()方法反序列化不包含该属性的json文件时,不会抛出任何异常.是应该以不同的方式工作还是我错过了什么?

我的课程:

public class User {
    public enum Gender {MALE, FEMALE}

    ;

    public static class Name {
        private String _first, _last;

        public String getFirst() {
            return _first;
        }

        public String getLast() {
            return _last;
        }

        public void setFirst(String s) {
            _first = s;
        }

        public void setLast(String s) {
            _last = s;
        }
    }

    private Gender _gender;
    private Name _name;
    private boolean _isVerified;
    private byte[] _userImage;

    @JsonProperty(value ="NAAME",required = true)
    public Name getName() {
        return _name;
    }

    @JsonProperty("VERIFIED") …
Run Code Online (Sandbox Code Playgroud)

java json jackson

41
推荐指数
2
解决办法
7万
查看次数

if语句中的sizeof()运算符

#include <stdio.h>
int main(void)
{
    if (sizeof(int) > -1)
        printf("True");
    else
        printf("False");
}
Run Code Online (Sandbox Code Playgroud)

它打印False.为什么sizeof()不返回值if

c sizeof

39
推荐指数
3
解决办法
4135
查看次数

双精度 - 小数位

根据我的阅读,数据类型double的值具有小数点后15位的近似精度.但是,当我使用其十进制表示重复的数字,例如1.0/7.0时,我发现变量保持值为0.14285714285714285 - 这是17位(通过调试器).

我想知道为什么它在内部表示为17个位置,为什么15的精度始终写在〜15?

c c++ precision ieee-754

37
推荐指数
6
解决办法
11万
查看次数

您是否在实际项目中使用过Quickcheck?

Quickcheck及其变体(即使Java中也有一个)似乎很有趣.但是,除了学术兴趣之外,它是否真正适用于真正的应用程序测试(例如,GUI应用程序或客户端/服务器,甚至是StackOverflow本身)?您对类似测试生成器的任何经验表示赞赏.

java testing haskell quickcheck

36
推荐指数
5
解决办法
9756
查看次数

关于暂定定义

我读了一本关于试探性定义的书,

暂定定义是没有存储类说明符且没有初始化程序的任何外部数据声明.如果到达翻译单元的末尾并且没有出现具有标识符的初始化器的定义,则暂定定义变为完整定义

请解释上述声明的含义.还有,声明和定义之间的区别?由于这个原因我混淆了.:(为什么这个程序没有错误:

#include <stdio.h>

int a;      //Tentative definition
int a;      //similarly this declaration too.
int main()  //not getting any error with this code why its so?
{
    printf("hi");
} 
Run Code Online (Sandbox Code Playgroud)

此外,此代码有什么问题:

#include<stdio.h>
printf("Hi");
int main(void){
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

34
推荐指数
2
解决办法
7319
查看次数

C99中的暂定定义和链接

考虑由两个文件组成的C程序,

在f1.c:

int x;
Run Code Online (Sandbox Code Playgroud)

f2.c:

int x=2;
Run Code Online (Sandbox Code Playgroud)

对C99标准第6.9.2段的解读是该程序应该被拒绝.在我对6.9.2的解释中,变量x是暂定的f1.c,但是这个暂定的定义在翻译单元的末尾变成了一个实际的定义,并且(在我看来),应该表现得好像f1.c包含了定义int x=0;.

对于所有编译器(以及重要的是,链接器)我能够尝试,这不是发生的事情.我试过的所有编译平台都链接了上面两个文件,两个文件中的值x都是2.

我怀疑这是偶然发生的,或者只是作为标准要求提供的"简单"功能.如果你考虑一下,这意味着链接器中对那些没有初始化器的全局变量有特殊支持,而不是那些显式初始化为零的全局变量.有人告诉我,无论如何编译Fortran可能都需要链接器功能.那将是一个合理的解释.

有什么想法吗?对标准的其他解释?文件f1.cf2.c拒绝链接在一起的平台名称?

注意:这很重要,因为问题出现在静态分析的上下文中.如果这两个文件可能拒绝在某个平台上链接,分析器应该抱怨,但是如果每个编译平台都接受它,那么就没有理由对它进行警告.

c fortran static-analysis compilation c99

32
推荐指数
3
解决办法
5146
查看次数

如何在sqlalchemy查询中选择文字值?

我有一个查询,如下所示:

query = session.query(Item) \
    .filter(Item.company_id == company_id) \
    .order_by(Item.id)
Run Code Online (Sandbox Code Playgroud)

这是一个非常基本的查询.除了拉出Item的值之外,我想在混合中添加一个额外的值,并将它返回给我.在原始SQL中,我会这样做:

SELECT *, 0 as subscribed
FROM items
WHERE company_id = 34
ORDER BY id
Run Code Online (Sandbox Code Playgroud)

如何通过sqlalchemy手动添加该值?

python sqlalchemy

31
推荐指数
2
解决办法
2万
查看次数

如何在Python中配置日志记录

我是Python新手,刚开始一个项目.我习惯log4j在Java中使用,我想像在Java中一样在Python中记录所有模块和类.

在Java中,我在src文件夹中有一个日志配置文件,log4j.properties如下所示:

log4j.rootLogger=DEBUG, Console, fileout

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %5p [%t] (%F:%L) - %m%n

log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=servidor.log
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} (%F:%L) %p %t %c - %m%n
Run Code Online (Sandbox Code Playgroud)

它记录到控制台和文件.

在我的类中,我只需要导入log4j并添加一个静态属性来恢复已log4j加载配置的记录器,然后所有类都将登录到控制台和文件中.配置文件由名称自动加载.例如:

import org.apache.log4j.Logger;

public class Main {
    public static Logger logger = Logger.getLogger(Main.class);
    public static void main(String[] args) {
        logger.info("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我在使用Python设置日志记录时遇到问题,我已经阅读了文档,但我找不到在许多模块/类中使用它的方法.我怎样才能以简单的方式设置Python日志记录,以便在每个模块/类中没有代码的情况下记录我的模块和类?是否有可能重现我在Python中编写的相同代码?

python logging python-2.7

31
推荐指数
2
解决办法
3万
查看次数

如何使用rspec生成控制器规范?

我正在将devise_invitable集成到我的应用程序中,我不得不编写一个自定义控制器 - InvitationsController - 来覆盖gem中的一些方法.现在,我想编写测试来涵盖我已完成的工作,但我无法弄清楚如何为新控制器生成规范.任何帮助将不胜感激.

谢谢!

controller rspec ruby-on-rails-3 rails-generate

30
推荐指数
3
解决办法
2万
查看次数