Size: a a a

2021 February 19

ID

In Dev in supapro.cxx
Pavel Kazakov
std::string::npos так и заимплеменчен обычно
При чем тут std::string?
источник

PK

Pavel Kazakov in supapro.cxx
In Dev
При чем тут std::string?
https://en.cppreference.com/w/cpp/string/basic_string/npos это -1 обычно потому что
источник

SS

Sergey Sobolev in supapro.cxx
In Dev
Я понимаю, но -1 быстрее и проще написать)
быстрее и проще, но не очевидно
источник

ID

In Dev in supapro.cxx
Sergey Sobolev
быстрее и проще, но не очевидно
Вопрос именно в корректности, как стандарт языка определяет этот момент?
источник

ID

In Dev in supapro.cxx
Может есть кейсы с UB какие
источник

PK

Pavel Kazakov in supapro.cxx
кмк, даже свидетели стандарта не имеют претензий к этому)
источник

SH

Serhii Herashchenko in supapro.cxx
In Dev
Всегда ли корректно использовать -1 для получения наибольшего значения для беззнаковых типов?
да
источник

SH

Serhii Herashchenko in supapro.cxx
для всех unsigned integer типов явно сказано, что идет модулирование значения
источник

PK

Pavel Kazakov in supapro.cxx
но если ты где-то в коде -1 юзаешь без пояснений, то касти его, или хотя бы литералом u снабжай
источник

SH

Serhii Herashchenko in supapro.cxx
Pavel Kazakov
но если ты где-то в коде -1 юзаешь без пояснений, то касти его, или хотя бы литералом u снабжай
ну из того, что я видел, то повсеместная практика - это

constexpr static std::uintX_t Invalid = -1;
источник

PK

Pavel Kazakov in supapro.cxx
не, я не про объявления/определения, а про какие-то вызовы foo(-1) — хрен его знает, что у людей в голове бывает
источник

SH

Serhii Herashchenko in supapro.cxx
Pavel Kazakov
не, я не про объявления/определения, а про какие-то вызовы foo(-1) — хрен его знает, что у людей в голове бывает
ну это совсем извращение, да
источник

PK

Pavel Kazakov in supapro.cxx
тут иногда такого Си-стиля начитаешься, что надо обо всём говорить))
источник

К

Касиет in supapro.cxx
//Example program 
#include <iostream> 
#include <string> 
#include <cmath> 
#include <cstdlib> 
using namespace std; 
int getRandomNumber(int min, int max) 

 static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0);   return static_cast<int>(rand() * fraction * (max - min + 1) + min); } 
int main() 

 int A[20]; 
 int sumOfEvenNumbers = 0; 
 int imax = 0; 
 cout<<"A["; 
 for (int i = 0; i < 20; i++){ 
 A[i] = getRandomNumber(-45,45); 
 cout<<A[i]<<" "; 
 if (A[i] > 0 && A[i]%2 == 0){ 
 sumOfEvenNumbers += A[i];  
 } 
 if (A[i] > A[imax]){ 
 imax = i;  
 } 
 } 
 cout<<"]"<<endl; 
 cout<<"The sum of positive even numbers is: "<<sumOfEvenNumbers<<endl;  cout<<"The max number is: "<<A[imax]<<" It's index is: "<<imax<<endl; const int N = 10; 
 int A[N], sum;
 cout << "5;15:" << endl; 
 for (int i = 0; i < N; i++) 
 { 
 cout << "Элемент #" << i + 1 << ": "; 
 cin >> A[i]; 
 } 
 sum = 0; 
 for (int i = 0; i < N; i++) 
 { 
 if (A[i] > 0) 
 sum += A[i]; 
 } 
 cout << "Сумма положительных элементов массива: " << sum << endl;  cin.get(); 
 return 0;} 
#include <stdio.h> 
int maximum(int ar[], int n) 

 if (n == 1) { 
 return ar[0]; 
 } else { 
 int max = maximum(ar, n-1); 
 printf("Largest element : %d\n", max); 
 return 5; // return ar[n-1] > max ? ar[n-1] : max; 
 } 

int main() 
{
 int array[5] = {5, 23, 28, 7, 1}; 
 printf("Maximum element of the array is: %d", maximum(array, 5));  return 0; 
}
источник

C

CodeDetector in supapro.cxx
Касиет
//Example program 
#include <iostream> 
#include <string> 
#include <cmath> 
#include <cstdlib> 
using namespace std; 
int getRandomNumber(int min, int max) 

 static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0);   return static_cast<int>(rand() * fraction * (max - min + 1) + min); } 
int main() 

 int A[20]; 
 int sumOfEvenNumbers = 0; 
 int imax = 0; 
 cout<<"A["; 
 for (int i = 0; i < 20; i++){ 
 A[i] = getRandomNumber(-45,45); 
 cout<<A[i]<<" "; 
 if (A[i] > 0 && A[i]%2 == 0){ 
 sumOfEvenNumbers += A[i];  
 } 
 if (A[i] > A[imax]){ 
 imax = i;  
 } 
 } 
 cout<<"]"<<endl; 
 cout<<"The sum of positive even numbers is: "<<sumOfEvenNumbers<<endl;  cout<<"The max number is: "<<A[imax]<<" It's index is: "<<imax<<endl; const int N = 10; 
 int A[N], sum;
 cout << "5;15:" << endl; 
 for (int i = 0; i < N; i++) 
 { 
 cout << "Элемент #" << i + 1 << ": "; 
 cin >> A[i]; 
 } 
 sum = 0; 
 for (int i = 0; i < N; i++) 
 { 
 if (A[i] > 0) 
 sum += A[i]; 
 } 
 cout << "Сумма положительных элементов массива: " << sum << endl;  cin.get(); 
 return 0;} 
#include <stdio.h> 
int maximum(int ar[], int n) 

 if (n == 1) { 
 return ar[0]; 
 } else { 
 int max = maximum(ar, n-1); 
 printf("Largest element : %d\n", max); 
 return 5; // return ar[n-1] > max ? ar[n-1] : max; 
 } 

int main() 
{
 int array[5] = {5, 23, 28, 7, 1}; 
 printf("Maximum element of the array is: %d", maximum(array, 5));  return 0; 
}
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

К

Касиет in supapro.cxx
#include <iostream>
#include <string>
#include <cmath>
#include <cstdlib>
using namespace std;

int getRandomNumber(int min, int max)
{
    static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0); 
    return static_cast<int>(rand() * fraction * (max - min + 1) + min);
}

int main()
{
    int N = 11; 
    int A[N];
    int count = 0;
    cout<<"A[";
    for (int i = 0; i < N; i++){
        A[i] = getRandomNumber(-100, 100);
        cout<<A[i]<<" ";
        if (A[i] < 0){
            count++;
        }
    }
    cout<<"]"<<endl;
    cout<<"A[";
    for (int i = 0; i < N; i++){
        if (count > 5){
            if(A[i] == 0){
                A[i] == 0;
            }
        }else {
            if (A[i] < 0){
                A[i] += 200;
            }
        }
        cout<<A[i]<<" ";
    }
    cout<<"]"<<endl;
    
    
}
источник

C

CodeDetector in supapro.cxx
Касиет
#include <iostream>
#include <string>
#include <cmath>
#include <cstdlib>
using namespace std;

int getRandomNumber(int min, int max)
{
    static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0); 
    return static_cast<int>(rand() * fraction * (max - min + 1) + min);
}

int main()
{
    int N = 11; 
    int A[N];
    int count = 0;
    cout<<"A[";
    for (int i = 0; i < N; i++){
        A[i] = getRandomNumber(-100, 100);
        cout<<A[i]<<" ";
        if (A[i] < 0){
            count++;
        }
    }
    cout<<"]"<<endl;
    cout<<"A[";
    for (int i = 0; i < N; i++){
        if (count > 5){
            if(A[i] == 0){
                A[i] == 0;
            }
        }else {
            if (A[i] < 0){
                A[i] += 200;
            }
        }
        cout<<A[i]<<" ";
    }
    cout<<"]"<<endl;
    
    
}
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

D

Danya in supapro.cxx
In Dev
Я понимаю, но -1 быстрее и проще написать)
И неочевиднее, и его сложнее поддерживать будет, если ты захочешь в какой-то момент захочешь свичнуться на знаковые. Код должен быть хорошо читаемым
источник

D

Danya in supapro.cxx
In Dev
Может есть кейсы с UB какие
Нет никаких. Переполнение беззнаковых чисел — определенное поведение
источник

D

Danya in supapro.cxx
Касиет
#include <iostream>
#include <string>
#include <cmath>
#include <cstdlib>
using namespace std;

int getRandomNumber(int min, int max)
{
    static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0); 
    return static_cast<int>(rand() * fraction * (max - min + 1) + min);
}

int main()
{
    int N = 11; 
    int A[N];
    int count = 0;
    cout<<"A[";
    for (int i = 0; i < N; i++){
        A[i] = getRandomNumber(-100, 100);
        cout<<A[i]<<" ";
        if (A[i] < 0){
            count++;
        }
    }
    cout<<"]"<<endl;
    cout<<"A[";
    for (int i = 0; i < N; i++){
        if (count > 5){
            if(A[i] == 0){
                A[i] == 0;
            }
        }else {
            if (A[i] < 0){
                A[i] += 200;
            }
        }
        cout<<A[i]<<" ";
    }
    cout<<"]"<<endl;
    
    
}
Зачем ты тоже самое два раза скинул(а)?
источник