Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/LibreOffice/compilerplugins/clang/test/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 2 kB image not shown  

Quelle  intvsfloat.cxx   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */


static const float PI = 3.4;
struct Class1
{
    float getFloat() const { return 1.5; }
    int getInt() const { return 1; }
    static constexpr float PI = 3.4;
    static constexpr float E() { return 3.4; }
};

void func1(Class1 const& class1)
{
    // expected-error@+1 {{comparing integer to float constant, can never be true [loplugin:intvsfloat]}}
    if (1 == PI)
        return;
    // expected-error@+1 {{comparing integer to float constant, can never be true [loplugin:intvsfloat]}}
    if (1 == class1.PI)
        return;
    // expected-error@+1 {{comparing integer to float constant, can never be true [loplugin:intvsfloat]}}
    if (true == class1.PI)
        return;
    if (1 == class1.getInt()) // no warning expected
        return;
    // expected-error@+1 {{comparing integer to float constant, can never be true [loplugin:intvsfloat]}}
    if (1 == class1.E())
        return;
    // expected-error@+1 {{comparing integer to float constant, can never be true [loplugin:intvsfloat]}}
    if (true == class1.E())
        return;
    if (1 == class1.getFloat()) // no warning expected
        return;
}

void func2(Class1 const& class1)
{
    // expected-error@+1 {{assigning constant float value to int truncates data [loplugin:intvsfloat]}}
    int i0 = PI;
    (void)i0;
    // expected-error@+1 {{assigning constant float value to int truncates data [loplugin:intvsfloat]}}
    int i1 = class1.PI;
    (void)i1;
    // expected-error@+1 {{assigning constant float value to int truncates data [loplugin:intvsfloat]}}
    int i2 = class1.E();
    (void)i2;
    int i3 = class1.getFloat(); // no warning expected
    (void)i3;
    int i4 = class1.getInt(); // no warning expected
    (void)i4;
    // expected-error@+1 {{assigning constant float value to int truncates data [loplugin:intvsfloat]}}
    bool b1 = class1.E();
    (void)b1;
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */

Messung V0.5
C=86 H=99 G=92

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.